为什么我添加/删除列时sqlalchemy不修改数据库?

0 投票
2 回答
1744 浏览
提问于 2025-04-16 11:29

如果我运行我的Python脚本,它会正确地创建表格。

但是,如果我添加或删除一列,然后再运行脚本,它却不会修改数据库。

这是为什么呢?

我是在定义好所有内容之后这样做的:

mapper(Product, products)
mapper(Category, categories)

metadata.create_all(engine)

session = Session()

2 个回答

0

我在Flask中使用SQLAlchemy,但我觉得这些概念在其他地方也适用。当你对数据库做了修改时,一定要记得提交这些更改:

session.commit()
4

create_all 这个功能只负责创建表格,并不会对已经存在的表格进行修改。

如果你修改了表格的列,那你需要要么删除再重新添加这个表,要么在你的脚本之外手动添加列。为了方便这个过程,有一些工具可以帮助你,比如 sqlalchemy-migrate,它是一个完整的迁移管理工具,适合你的项目使用。

撰写回答