我目前正在 Flask 中创建一个 Web 应用程序,并使用 SQL-alchemy(不是 Flask 版本)来处理对 MySQL 数据库的读取和写入。
我有大约 15 个不同的表,每个表映射到不同的声明性类,但是该应用程序仍处于测试阶段,因此这个数字可能会增加。
我想要一种方法来迭代每个表并在每个表上运行相同的命令。这是更新功能的一部分,管理员可以更改书籍的名称,此名称更改应反射(reflect)在引用该书籍的所有其他表中。
有没有办法迭代所有 SqlAlchemy 表?
谢谢!
最佳答案
不太确定你想在这里实现什么,但如果你使用声明性基础,你可以尝试这样的事情:
tables = Base.__subclasses__()
for t in tables:
rows = Session.query(t).all()
for r in rows:
... do something ...
这通过列出 Base 的子类来获取所有表。然后它依次查询每个表中的所有内容并循环遍历选定的行。
但是,我不太明白你为什么要这样做。您如何描述您的问题是,您应该有一个 Book 表,并且所有其他人如果想要引用书籍都链接到它。这将是关系模型,而不是在每个表中拖动图书信息并尝试像这样手动管理它们。
关于python - SQLalchemy - 迭代所有映射表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956943/