使用flask-sqlalchemy和pymysql操作MySQL数据库教程
本文将介绍如何使用 Flask 框架结合 pymysql 模块来操作 MySQL 数据库。首先,我们需要通过 pip 安装 flask-sqlalchemy 和 pymysql 这两个 Python 库。Flask-SQLAlchemy 是 Flask 的一个扩展,它提供了一个 ORM(对象关系映射)框架,使得我们可以更方便地操作数据库,将数据库表与 Python 类对应,数据库记录与类的实例对应。 在 Flask 中使用 Flask-SQLAlchemy 需要进行以下步骤: 1. 导入所需的库:导入 Flask-SQLAlchemy 和 Flask。Flask 是一个轻量级的 Web 服务程序,而 Flask-SQLAlchemy 是其扩展,用于数据库操作。 ```python from flask.ext.sqlalchemy import SQLAlchemy from flask import Flask ``` 2. 创建 Flask 应用实例,并配置数据库连接:设置应用的 `SECRET_KEY`,然后配置 `SQLALCHEMY_DATABASE_URI`,该 URI 包含数据库驱动名称(mysql+pymysql)、数据库用户名、密码、主机地址、端口号以及数据库名称。例如: ```python app = Flask(__name__) app.config['SECRET_KEY'] = 'hardtoguess' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://jianshu:jianshu@127.0.0.1:3306/jianshu' ``` 3. 启用自动提交:设置 `SQLALCHEMY_COMMIT_ON_TEARDOWN` 为 True,确保每次请求结束时,数据库中的更改都会被自动提交。 ```python app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True ``` 4. 实例化 SQLAlchemy:创建一个 SQLAlchemy 对象并将其绑定到 Flask 应用。 ```python db = SQLAlchemy(app) ``` 5. 定义数据模型:创建数据库模型类,这些类代表数据库中的表。例如,我们可以创建一个 `Role` 类来表示角色表: ```python class Role(db.Model): __tablename__ = 'roles' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True) user = db.relationship('User', backref='role') def __repr__(self): return self.name ``` 在这个例子中,`Role` 类有三个字段:id(整型,主键),name(长度不超过64个字符的字符串,且必须唯一)和 user(与 User 表的关联)。`__repr__` 方法用于返回一个可读的字符串表示,虽然这不是必须的,但有助于调试。 6. 使用数据模型:现在,你可以使用这些数据模型来执行常见的数据库操作,如创建、查询、更新和删除数据。例如,添加一个新的角色: ```python new_role = Role(name='Editor') db.session.add(new_role) db.session.commit() ``` 总结,本文介绍了如何使用 Flask-SQLAlchemy 和 pymysql 来连接 MySQL 数据库并进行操作。通过 ORM 方式,开发者可以更直观、便捷地处理数据库事务,提高了开发效率。
- 粉丝: 10
- 资源: 888
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 十种常见电感线圈电感量计算公式详解
- 军用车辆:CAN总线的集成与优势
- CAN总线在汽车智能换档系统中的作用与实现
- CAN总线数据超载问题及解决策略
- 汽车车身系统CAN总线设计与应用
- SAP企业需求深度剖析:财务会计与供应链的关键流程与改进策略
- CAN总线在发动机电控系统中的通信设计实践
- Spring与iBATIS整合:快速开发与比较分析
- CAN总线驱动的整车管理系统硬件设计详解
- CAN总线通讯智能节点设计与实现
- DSP实现电动汽车CAN总线通讯技术
- CAN协议网关设计:自动位速率检测与互连
- Xcode免证书调试iPad程序开发指南
- 分布式数据库查询优化算法探讨
- Win7安装VC++6.0完全指南:解决兼容性与Office冲突
- MFC实现学生信息管理系统:登录与数据库操作