Flask-SQLAlchemy是针对flask开发而封装的一个包,这里面使得SQLAlchemy操作更方便,基本用法和SQLAlchemy类似。
安装:
pip install flask-sqlalchemy
数据库连接:
- 跟sqlalchemy一样,定义好数据库连接字符串DB_URI。
- 将这个定义好的数据库连接字符串DB_URI,通过
SQLALCHEMY_DATABASE_URI
这个键放到app.config
中。示例代码:app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
. - 使用
flask_sqlalchemy.SQLAlchemy
这个类定义一个对象,并将app
传入进去。示例代码:db = SQLAlchemy(app)
。
示例代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
HOSTNAME = '' # 主机地址
PORT = '3306' # 端口号
DATABASE = '' # 数据库
USERNAME = '' # 数据库账号
PASSWORD = '' # 数据库密码
# dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
创建ORM模型:
- 还是跟使用sqlalchemy一样,定义模型。现在不再是需要使用
delarative_base
来创建一个基类。而是使用db.Model
来作为基类。 - 在模型类中,
Column
、String
、Integer
以及relationship
等,都不需要导入了,直接使用db
下面相应的属性名就可以了。 - 在定义模型的时候,可以不写
__tablename__
,那么flask_sqlalchemy
会默认使用当前的模型的名字转换成小写来作为表的名字,并且如果这个模型的名字使用了多个单词并且使用了驼峰命名法,那么会在多个单词之间使用下划线来进行连接。虽然flask_sqlalchemy给我们提供了这个特性,但是不推荐使用。
将ORM模型映射到数据库:
- 删除数据库:
db.drop_all()
- 创建数据库:
db.create_all()
使用session:
以后session也不需要使用sessionmaker
来创建了。直接使用db.session
就可以了。操作这个session的时候就跟之前的sqlalchemy
的session
是一样的。