选择查询sqlalchemy模型

选择查询sqlalchemy模型,sql,sqlalchemy,Sql,Sqlalchemy,我有一个炼金术模型 bar = Table( "try", meta, Column('ID', Integer, primary_key=True), Column("foo", String), Column("baz", String), info={ "audit.options": { "enabled": True, } }, ) 但是当我尝试运行selectquery时

我有一个炼金术模型

bar = Table(
    "try",
    meta,
    Column('ID', Integer, primary_key=True),
    Column("foo", String),
    Column("baz", String),
    info={
        "audit.options": {
            "enabled": True,
        }
    },
)
但是当我尝试运行selectquery时

它显示了一个错误

ERROR:  column "id" does not exist
LINE 1: select * from try where ID=1;

问题是什么?

这可能是因为您在模型定义中使用了大写字母,但原始sql忽略了它们,从而造成了不匹配。试一试

这是可行的,但我还有一个疑问,那就是我必须添加“id”字段来提取行。sqlalchemy是否不像Postgres那样为每一行分配默认的唯一id,以便我可以使用该id提取任何行。id应该是唯一的,但如果您使用insert指定id,我已经看到sqlalchemy覆盖了现有的行,而不是添加新的行。加上插页,您不需要指定它将创建的下一行的id,并自动正确地增加id是的,`` id``工作正常,但在postgresql模型中,我们不必单独创建一个'id'字段,itt自动创建一个唯一的id,它本身作为主键工作,sqlalchemy是否也这样做,或者我必须保留它“id”字段。无法自信地回答此问题。老实说,我宁愿从现有的数据库中读取数据库的元数据,而不是用代码创建模型,这太浪费时间了。很可能你不是唯一一个管理数据库的人,你的代码也不是唯一的真实来源。只需按原样读取数据库并使用它。Sqlalchemy可以很好地做到这一点。
ERROR:  column "id" does not exist
LINE 1: select * from try where ID=1;