flask 连接数据库和orm
时间: 2023-09-24 20:13:37 浏览: 54
Flask是一个轻量级的Web框架,它并没有内置数据库连接和ORM功能,但是可以通过第三方库来实现这些功能,比如SQLAlchemy。
SQLAlchemy是一个强大的ORM库,可以与多种数据库进行交互,包括SQLite、MySQL、PostgreSQL等等。下面是使用Flask和SQLAlchemy连接数据库和ORM的步骤。
1. 安装SQLAlchemy
可以通过pip命令来安装SQLAlchemy:
```
pip install SQLAlchemy
```
2. 配置数据库连接
在Flask项目的配置文件中,可以配置数据库连接信息。以SQLite为例,配置如下:
```python
SQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/database.db'
```
其中,`////path/to/database.db`为SQLite数据库的路径。
3. 创建SQLAlchemy实例
在Flask应用中,需要创建一个SQLAlchemy实例,用于管理数据库连接和ORM映射。可以在应用的工厂函数中创建SQLAlchemy实例,如下所示:
```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////path/to/database.db'
db = SQLAlchemy(app)
```
4. 定义模型类
在ORM中,每个数据表都对应一个模型类。可以通过继承SQLAlchemy提供的`db.Model`类来定义模型类。例如,定义一个`User`模型类:
```python
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __repr__(self):
return '<User %r>' % self.username
```
在上面的代码中,`User`类继承了`db.Model`类,同时定义了`id`、`username`和`email`三个属性,分别对应数据表中的三个字段。`__repr__`方法用于在控制台中输出模型对象的信息。
5. 数据库迁移
在ORM中,模型类和数据表之间的映射是通过数据库迁移来实现的。可以使用Flask-Migrate扩展库来进行数据库迁移。
首先需要安装Flask-Migrate:
```
pip install Flask-Migrate
```
然后在Flask应用中,创建一个`migrations`目录,用于存放迁移脚本:
```
flask db init
```
接下来,生成一个迁移脚本:
```
flask db migrate -m "create users table"
```
最后,执行迁移脚本,创建数据表:
```
flask db upgrade
```
6. 数据库操作
使用SQLAlchemy进行数据库操作非常简单。例如,向`User`表中插入一条数据:
```python
user = User(username='admin', email='admin@example.com')
db.session.add(user)
db.session.commit()
```
查询数据:
```python
users = User.query.all()
```
更新数据:
```python
user = User.query.filter_by(username='admin').first()
user.email = 'newadmin@example.com'
db.session.commit()
```
删除数据:
```python
user = User.query.filter_by(username='admin').first()
db.session.delete(user)
db.session.commit()
```
以上就是使用Flask和SQLAlchemy进行数据库连接和ORM操作的基本步骤。