在SQLAlchemy中,可以使用autogenerate=False参数来阻止Alembic自动生成表格。下面是一个示例代码:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建数据库引擎
engine = create_engine('sqlite:///test.db')
# 创建数据库会话
Session = sessionmaker(bind=engine)
session = Session()
# 创建基础模型
Base = declarative_base()
# 定义数据模型
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
# 创建数据表
Base.metadata.create_all(engine, checkfirst=False)
# 关闭会话
session.close()
在上面的代码中,Base.metadata.create_all(engine, checkfirst=False)语句会创建所有定义的数据模型对应的表格。将checkfirst参数设置为False可以确保在每次运行代码时都创建新的表格。
如果要阻止Alembic生成表格,可以在使用Alembic进行数据库迁移时将autogenerate参数设置为False。例如,可以在env.py文件中的run_migrations_online函数中修改如下:
def run_migrations_online():
# 配置Alembic
config = context.config
config.set_main_option('sqlalchemy.url', DATABASE_URL)
# 阻止生成表格
config.set_main_option('script_location', 'alembic')
config.set_main_option('version_locations', 'alembic')
# 创建迁移脚本
with context.begin_transaction():
context.run_migrations(autogenerate=False)
在上面的代码中,将autogenerate参数设置为False可以阻止Alembic生成表格。