sqlalchemy中text 的使用问题?

topics='1,4,7'
t=text("SELECT * FROM tb_rcsy where id in (:ids))
rcsy=conn.execute(t, ids=topics).fetchall()
print rcsy

出错:Warning: Truncated incorrect DOUBLE value: '1,4,7'

我测试了一下,如果直接把变量放进去:

t=text("SELECT * FROM tb_rcsy where id in (1,4,7))
rcsy=conn.execute(t).fetchall()
print rcsy

就ok.


问题:如何处理像ids这样的变量?

ps:如果是逗号隔开,就是字符串,但是in后面又不需要字符串,两难!
阅读 7.3k
3 个回答

find_in_set

>>> from sqlalchemy.sql import text
>>> s = text(
...     "SELECT users.fullname || ', ' || addresses.email_address AS title "
...         "FROM users, addresses "
...         "WHERE users.id = addresses.user_id "
...         "AND users.name BETWEEN :x AND :y "
...         "AND (addresses.email_address LIKE :e1 "
...             "OR addresses.email_address LIKE :e2)")
SQL>>> conn.execute(s, x='m', y='z', e1='%@aol.com', e2='%@msn.com').fetchall() 
[(u'Wendy Williams, wendy@aol.com',)]

了解一下sql bind的机制

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题