鍍金池/ 問答/Python  C#/ 怎么將 tuple 作為 torndb 查詢的 params 傳進(jìn)去?

怎么將 tuple 作為 torndb 查詢的 params 傳進(jìn)去?

# ......
# 可知參數(shù), 向torndb傳遞查詢參數(shù):
sql = 'select * from test where id=%s and name = %s '
row =  conn.get(sql, 1,'admin')
 
# 需求 : 查詢條件未知,如使用dict
d = {
     'name=': 'admin',
      'id=': '1',
     # .... 可能存在更多查詢參數(shù)
}
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...

回答
編輯回答
貓小柒

出發(fā)點(diǎn)為: 在不可知數(shù) 多查詢條件下,怎么用torndo進(jìn)行查詢
自己研究了一下,用**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)
2017年3月22日 17:51