使用flask-sqlalchemy操作MySQL数据库教程
169 浏览量
更新于2024-08-29
收藏 145KB PDF 举报
本文主要介绍了如何在Python的Flask框架中配置并操作MySQL数据库,特别提到了使用Flask-SQLAlchemy扩展进行数据库交互的方法。在Python 3环境下,由于不支持MySQLdb模块,推荐使用pymysql作为MySQL的Python接口。在开始之前,需要先通过`pip install pymysql`安装pymysql。
在配置Flask应用与MySQL数据库的连接时,首先要在`config.py`文件中设置`SQLALCHEMY_DATABASE_URI`变量,该变量包含了数据库的URL,包括用户名、密码、主机地址、端口和数据库名称,例如:`SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:xxxxx@localhost:3306/test?charset=utf8'`,其中`xxxxx`替换为实际的MySQL密码。另外,设置`SQLALCHEMY_TRACK_MODIFICATIONS=True`来追踪数据库的修改。
接着,在`app/__init__.py`文件中,通过`app.config.from_object('config')`导入配置,然后创建一个SQLAlchemy实例`db = SQLAlchemy(app)`,这样就完成了Flask应用与数据库的连接。
为了便于数据库操作,通常会创建一个`models.py`文件,用于定义数据库模型。Flask-SQLAlchemy提供了一个声明式API,可以更简洁地定义表结构。例如,定义一个User模型:
```python
from flask_sqlalchemy import SQLAlchemy
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
```
在定义了模型之后,可以使用Flask-SQLAlchemy提供的方法进行数据库的增删改查操作。例如,插入一个新的用户:
```python
new_user = User(username='John', email='john@example.com')
db.session.add(new_user)
db.session.commit()
```
查询用户:
```python
users = User.query.all()
for user in users:
print(user.username)
```
更新用户信息:
```python
user = User.query.filter_by(username='John').first()
user.email = 'new_email@example.com'
db.session.commit()
```
删除用户:
```python
user_to_delete = User.query.get(1)
db.session.delete(user_to_delete)
db.session.commit()
```
Flask-SQLAlchemy简化了原本需要通过SQLAlchemy进行的数据库操作,使得在Flask应用中管理数据库变得更加方便。同时,它还提供了模型间的关系定义、事务处理等功能,是Flask开发中常用的数据库扩展工具。
2020-09-09 上传
2024-06-06 上传
2022-03-05 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-02-18 上传
2023-09-28 上传
weixin_38733525
- 粉丝: 2
- 资源: 920
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库