定义ORM模型并映射到数据库
创建 ORM 基类
使用 declarative_base
根据 engine
来创建一个 ORM 基类。
from SqlAIchemy.LinkDB.main import engine
Base = declarative_base()
创建自定义类
用上边定义的 Base
类来实现自己的 ORM 类。
__tablename__
类属性,可以用来指定这个模型映射到数据库中的表名。
# 继承 Base 类
class User(Base):
# 指定映射表名
__tablename__ = 'user'
创建属性
创建类中的属性来映射到表中的字段,所有需要映射到表中的属性都应该为 Column
类型。
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String(50))
age = Column(Integer)
建立映射
使用Base.metadata.create_all()
来将模型映射到数据库中。
# 建立与数据库的映射
Base.metadata.create_all(engine)
生成的数据库表如下。
查看生成的 SQL 脚本。
create table user
(
id int auto_increment
primary key,
name varchar(50) null,
age int null
);
删除映像
当对基类的属性进行更新时,需要重新生成数据库表,这是可以使用 drop_all()
。
# 删除与数据库的映射
Base.metadata.drop_all(engine)
Base.metadata.drop_all(engine)
的作用就是删除数据库中所有与 Base
相关联的表。
注意
declarative_base()
函数不接受位置参数。- 一旦使用
Base.metadata.create_all()
将模型映射到数据库中后,即使改变了模型的字段,也不会重新映射了。