python - SQLAlchemy 查询动态字段

标签 python sql database sqlalchemy

我有一个包含很多列的表 --

class Dummy(object):
    __tablename__ = 'dummies'
    c1 = Column(Integer)
    c2 = Column(Integer)
    c3 = Column(Integer)
    ...
    cN = Column(Integer)

我可以在不手动指定每个列名称的情况下单独查询所有列吗? --

for i in range(1, N):
    c_name = 'c%d' % i
    dummy = DBSession().query(Dummy).filter_by(???=0).first()

谢谢。

最佳答案

您可以遍历表中的列。一、表:

from sqlalchemy.orm.attributes import manager_of_class
dummy_table = manager_of_class(Dummy).mapper.mapped_table

最后是查询

for col in dummy_table.columns:
    dummy = session.query(Dummy).filter(col == 0).first()

或者,您实际上是从一个比您显示的更复杂的函数生成一组特定的列。在这种情况下,使用 getattr。不,真的。

for i in range(1, N):
    c_name = 'c%d' % i
    dummy = DBSession().query(Dummy).filter(getattr(Dummy, c_name) == 0).first()

关于python - SQLAlchemy 查询动态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304271/

相关文章:

python - 查找窗口失败

php - 如何在 MySQL 的 instr() 中应用通配符?

mysql - 计算两个表的平均值

python - 在 Windows 上使用 Python 通过 ssh 连接到数据库时出错

mysql - 当更新记录时,如何防止 MySQL 存储过程中的变量值发生变化?

python - 如何在 python 中访问切片对象的元素

python - Flask-SQLAlchemy:如何有条件地插入或更新一行

python - 如何在 Python 中填充除 ==、!=、>=、<= 之外的所有等号?

SQL 替换字符串中的所有字符

database - 如何在 Slick 3.1 中使用不支持的数据库