2024-05-04 01:49:31 发布
网友
我正在尝试用sqlalchemy进行这个查询
SELECT id, name FROM user WHERE id IN (123, 456)
我想在执行时绑定列表[123, 456]。
[123, 456]
假设您使用声明式样式(即ORM类),这非常简单:
query = db_session.query(User.id, User.name).filter(User.id.in_([123,456])) results = query.all()
这里的db_session是数据库会话,而User是ORM类,其__tablename__等于"users"。
db_session
User
__tablename__
"users"
怎么样
session.query(MyUserClass).filter(MyUserClass.id.in_((123,456))).all()
编辑:如果没有ORM,则
session.execute( select( [MyUserTable.c.id, MyUserTable.c.name], MyUserTable.c.id.in_((123, 456)) ) ).fetchall()
^{}接受两个参数,第一个参数是要检索的字段列表,第二个参数是where条件。您可以通过c(或columns)属性访问表对象上的所有字段。
where
c
columns
另一种方法是使用带有SQLAlchemy的原始SQL模式,我使用SQLAlchemy 0.9.8、python 2.7、MySQL 5.X和MySQL python作为连接器,在这种情况下,需要一个元组。我的代码如下:
id_list = [1, 2, 3, 4, 5] # in most case we have an integer list or set s = text('SELECT id, content FROM myTable WHERE id IN :id_list') conn = engine.connect() # get a mysql connection rs = conn.execute(s, id_list=tuple(id_list)).fetchall()
希望一切都对你有用。
假设您使用声明式样式(即ORM类),这非常简单:
这里的
db_session
是数据库会话,而User
是ORM类,其__tablename__
等于"users"
。怎么样
编辑:如果没有ORM,则
^{} 接受两个参数,第一个参数是要检索的字段列表,第二个参数是
where
条件。您可以通过c
(或columns
)属性访问表对象上的所有字段。另一种方法是使用带有SQLAlchemy的原始SQL模式,我使用SQLAlchemy 0.9.8、python 2.7、MySQL 5.X和MySQL python作为连接器,在这种情况下,需要一个元组。我的代码如下:
希望一切都对你有用。
相关问题 更多 >
编程相关推荐