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是一样的。