主题
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
页面功能

注册成功后
