为什么我添加/删除列时sqlalchemy不修改数据库?
如果我运行我的Python脚本,它会正确地创建表格。
但是,如果我添加或删除一列,然后再运行脚本,它却不会修改数据库。
这是为什么呢?
我是在定义好所有内容之后这样做的:
mapper(Product, products)
mapper(Category, categories)
metadata.create_all(engine)
session = Session()
2 个回答
0
我在Flask中使用SQLAlchemy,但我觉得这些概念在其他地方也适用。当你对数据库做了修改时,一定要记得提交这些更改:
session.commit()
4
create_all 这个功能只负责创建表格,并不会对已经存在的表格进行修改。
如果你修改了表格的列,那你需要要么删除再重新添加这个表,要么在你的脚本之外手动添加列。为了方便这个过程,有一些工具可以帮助你,比如 sqlalchemy-migrate,它是一个完整的迁移管理工具,适合你的项目使用。