主题
SQLAlchemy
SQLAlchemy 是一个用于 Python 的 SQL 工具包和 ORM(对象关系映射)库。
安装依赖
shell
pip install flask-sqlalchemy定义模型
类变量__tablename__定义在数据库中使用的表名
db.Column类定义模型的属性
python
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True, index=True)
email = db.Column(db.String(120), unique=True, index=True)
password = db.Column(db.String(128))
about_me = db.Column(db.Text)
def __repr__(self):
return f'<User {self.name}>'SQLAlchemy 列类型:
Integer:整数类型。BigInteger:大整数类型,可以存储比 Integer 更大的数值。SmallInteger:小整数类型,适合存储较小范围的数值。Numeric(precision, scale):固定精度和比例的数值类型。Float(precision):浮点数类型。String(length):变长字符串类型,需要指定最大长度。Text:文本类型,通常用于存储较长的字符串。Boolean:布尔值类型。Date:日期类型,只存储年月日。Time:时间类型,只存储时分秒。DateTime:日期时间类型,同时存储日期和时间。Interval:时间间隔类型。Enum:枚举类型,限制列的取值为一组特定的字符串。PickleType:任意可序列化的 Python 对象,使用 pickle 序列化后存储。LargeBinary(length):二进制数据类型。
除了上述基本类型外,SQLAlchemy 还支持自定义类型,可以通过继承 TypeDecorator 或 UserDefinedType 类来创建。此外,SQLAlchemy 也支持特定数据库的专有类型,例如 PostgreSQL 的 ARRAY, JSON, JSONB, UUID 等。
关系
提供了灵活的方式定义一对多、多对一、一对一和多对多的关系
python
relationship("Author", back_populates="books")第一个参数表明这个关系的另一端是哪个模型
backref参数向User模型中添加一个role属性,从而定义反向关系
实战案例-用户注册和列表
基于sqlite api了解基本使用方法
https://gitee.com/PatrickW/flask-web/blob/master/src/8sqldb.py
https://gitee.com/PatrickW/flask-web/blob/master/src/templates/sqldb/users.html
https://gitee.com/PatrickW/flask-web/blob/master/src/templates/sqldb/users_list.html
用户列表:http://localhost:9999/users
页面功能

注册成功后
