[英]Looping Through Python Dictionary
我正在嘗試遍歷字典並追加到字符串,這是代碼:
mylist= {'name':'james', 'age': '23', 'time': 'next'}
myquery = "select * from players where"
for k, v in mylist.items():
myquery += "%s=%s and" % (k, v),
print myquery
這是在主表中打印'select * from maintable where age=23 and name=jame and time=next and'
我的問題是結果的末尾有一個'and'。
我如何在沒有最后一個和的情況下運行for循環?
任何幫助,將不勝感激。
使用str.join()
方法將字符串與' and '
分隔符連接在一起:
myquery = "select * from players where {}".format(
' and '.join('{}={}'.format(k, v) for k, v in mylist.iteritems()))
演示:
>>> mylist= {'name':'james', 'age': '23', 'time': 'next'}
>>> "select * from players where {}".format(
... ' and '.join('{}={}'.format(k, v) for k, v in mylist.iteritems()))
'select * from players where age=23 and name=james and time=next'
但是,看起來好像您正在構建SQL查詢。 在這種情況下,請勿插值,而應使用SQL參數:
myquery = "select * from players where {}".format(
' and '.join('{}=?'.format(k) for k in mylist))
然后使用cursor.execute(myquery, mylist.values())
將參數傳遞給數據庫適配器。
檢查數據庫適配器使用什么格式; 有些使用%s
(C sprintf樣式),而另一些使用?
作為占位符。
在for循環的末尾添加此語句,該語句從查詢語句中刪除and。
if myquery.endswith('and'):
myquery = myquery[:-3]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.