Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查SQLAlchemy映射是否与现有表匹配_Python_Sqlalchemy - Fatal编程技术网

Python 如何检查SQLAlchemy映射是否与现有表匹配

Python 如何检查SQLAlchemy映射是否与现有表匹配,python,sqlalchemy,Python,Sqlalchemy,我正在使用SQLAlchemy的声明性系统来定义映射。之后,我通过 Base.metadata.create_all(engine, checkfirst=True) 如果我后来更改了一个声明性类(例如,通过添加列)并再次运行该程序,那么只有在我尝试提交包含该修改类实例的会话时,才会检测到该更改。这发生在程序运行时的相对较晚的时间。我更愿意在启动过程中发现这个问题,这样我就可以尽早失败 如何明确要求SQLAlchemy检查现有表是否与我的声明性映射匹配? 请注意,我不一定要寻找如何检测已更改的

我正在使用SQLAlchemy的声明性系统来定义映射。之后,我通过

Base.metadata.create_all(engine, checkfirst=True)
如果我后来更改了一个声明性类(例如,通过添加列)并再次运行该程序,那么只有在我尝试提交包含该修改类实例的会话时,才会检测到该更改。这发生在程序运行时的相对较晚的时间。我更愿意在启动过程中发现这个问题,这样我就可以尽早失败

如何明确要求SQLAlchemy检查现有表是否与我的声明性映射匹配?


请注意,我不一定要寻找如何检测已更改的内容或如何执行相应的迁移——我只想知道我的表是否与映射匹配。

我不知道有内置函数会将对象映射与db模式进行比较。您可能需要与数据库的信息模式查询一起使用,以创建自己的比较函数。您可以查看并了解它们是如何实现的。如果它是一个长时间运行的脚本,甚至可能在脚本开始时触发alembic autogenerate,并检查结果修订版是否有任何更改。。重新发明轮子没有意义!