在不同模块中使用声明式模式创建表时,可以按照以下步骤进行解决:
# module1.py
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Table1(Base):
__tablename__ = 'table1'
id = Column(Integer, primary_key=True)
name = Column(String)
# module2.py
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Table2(Base):
__tablename__ = 'table2'
id = Column(Integer, primary_key=True)
age = Column(Integer)
Base.metadata.create_all()
方法来创建所有的表。# main.py
from module1 import Table1
from module2 import Table2
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# 创建数据库连接
engine = create_engine('sqlite:///database.db')
Session = sessionmaker(bind=engine)
session = Session()
# 导入所有模块中的表类
Base.metadata.create_all(engine)
# 创建表
table1 = Table1(name='John')
table2 = Table2(age=25)
session.add(table1)
session.add(table2)
session.commit()
在这个例子中,我们分别在 module1.py
和 module2.py
中定义了两个表类(Table1
和 Table2
)。然后在 main.py
中将这两个表类导入并调用 Base.metadata.create_all()
方法来创建所有的表。
注意,我们需要在最后的步骤中创建数据库连接,并通过 Session
类来管理会话。然后我们可以创建实例并将其添加到会话中,并提交更改以将数据插入到表中。