怎么将 tuple 作为 torndb 查询的 params 传进去?

# ......
# 可知参数, 向torndb传递查询参数:
sql = 'select * from test where id=%s and name = %s '
row =  conn.get(sql, 1,'admin')
 
# 需求 : 查询条件未知,如使用dict
d = {
     'name=': 'admin',
      'id=': '1',
     # .... 可能存在更多查询参数
}
where_str = '' # 这里可以拼接 d 的键名,生成where字符串
sql = 'select * from test ' + where_str
row =  conn.get(sql, *args) # 这里的*args怎么取到?
 
#  测试 将 d 的value放入 tuple 作为*args 传入,torndb报错

原题答案如下:

def bar(*args):
    print(type(args))
    print(args)

t = ('1','2','3')
bar(*t)

参考:
https://stackoverflow.com/que...

阅读 2.2k
1 个回答

出发点为: 在不可知数 多查询条件下,怎么用torndo进行查询
自己研究了一下,用**kwargs方式解决了,

# python新手,代码写得不好,见笑!
 
import my_torndb as torndb # 用的py3,修改了torndb的代码
 
conn = torndb.Connection('127.0.0.1', 'test', user='root', password='123456')
 
def get_where_template(**kwargs):
    where_template = ''
    if len(kwargs) > 0:
        where_template += " WHERE " + " AND ".join(map(lambda x: "%s like %%(%s)s" % (x, x), kwargs))
 
    return where_template
 
def get_list(**kwargs):
    sql = 'select * from users ' + get_where_template(**kwargs)
    print(sql)
    row = conn.query(sql, **kwargs)
    for x in row:
        print(x.get('name'))
 
get_list(id='1')
print('-------------------')
get_list(name='%%张%%',  title='%%管理%%',  role_id=1)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题