flask如何如数据库交互
时间: 2024-03-21 07:19:56 浏览: 21
在 Flask 中使用数据库可以通过 Flask-SQLAlchemy 插件来实现。Flask-SQLAlchemy 是 SQLAlchemy 的 Flask 扩展,它提供了一些与 Flask 集成的功能,使得在 Flask 应用中使用 SQLAlchemy 变得更加容易。
以下是使用 Flask-SQLAlchemy 进行数据库交互的步骤:
1. 安装 Flask-SQLAlchemy
在终端中使用以下命令安装 Flask-SQLAlchemy:
```
pip install Flask-SQLAlchemy
```
2. 配置数据库连接
在 Flask 应用中配置数据库连接信息,例如:
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
```
其中,`SQLALCHEMY_DATABASE_URI` 是数据库连接字符串,`SQLALCHEMY_TRACK_MODIFICATIONS` 表示是否追踪对象变化。
3. 定义模型
定义模型类,用于映射数据库中的表和字段,例如:
```python
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
```
上面的代码定义了一个名为 User 的模型类,它映射了一个名为 user 的表,该表包括 id、username 和 email 三个字段。`__repr__` 方法用于在交互式环境中显示对象。
4. 创建表
使用 Flask-SQLAlchemy 创建数据库表,可以运行以下命令:
```python
db.create_all()
```
该命令会根据模型类创建相应的表。如果表已经存在,它会忽略这些表,不会删除或修改它们。
5. 数据库操作
通过模型类操作数据库,例如:
```python
# 创建用户
user = User(username='john', email='john@example.com')
db.session.add(user)
db.session.commit()
# 查询用户
users = User.query.all()
# 更新用户
user = User.query.filter_by(username='john').first()
user.email = 'new_email@example.com'
db.session.commit()
# 删除用户
user = User.query.filter_by(username='john').first()
db.session.delete(user)
db.session.commit()
```
上面的代码演示了使用 Flask-SQLAlchemy 进行数据库操作的基本步骤。需要注意的是,每一次对数据库的操作,都需要使用 `db.session.commit()` 方法提交事务。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)