uids: ['1234','4321','1111']
的清單,我想這變成一個單一的字符串:
"uid = '1234' OR uid = '4321' OR uid = '1111'"
什麼的最有效的方法來做到這一點? 謝謝!
uids: ['1234','4321','1111']
的清單,我想這變成一個單一的字符串:
"uid = '1234' OR uid = '4321' OR uid = '1111'"
什麼的最有效的方法來做到這一點? 謝謝!
如果 - 正如Mike和Thomas在評論中提到的那樣 - 您需要這個數據庫查詢,您應該接受Thomas的建議並使用the DB-API。
這裏有兩個例子:
MySQL的
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='u', passwd='p', db='mydb')
curs = conn.cursor()
uids = [1234,4321,1111]
qry = ("""SELECT cheese
FROM cheeseshop
WHERE id IN (%s)""" % ','.join(['%s']*len(uids)))
# 'SELECT cheese FROM cheeseshop WHERE id IN (%s,%s,%s)'
curs.execute(qry, uids)
curs.fetchone()
# ...
SQLite的
import sqlite3
conn = sqlite3.connect(':memory:')
curs = conn.cursor()
uids = [1234,4321,1111]
qry = ("""SELECT cheese
FROM cheeseshop
WHERE id IN (%s)""" % ','.join('?'*len(uids)))
# 'SELECT cheese FROM cheeseshop WHERE id IN (?,?,?)'
curs.execute(qry, uids)
curs.fetchone()
# ...
' OR '.join("uid = '%s'" % u for u in uids)
這調用了串' OR '
,這需要在傳遞的列表,並把所述字符串中的每個元件之間的join
功能,然後將其連接在一起。 (用來把OR值中的每個鍵=值對之間。)
的()
裏面的部分是理解,說:「在uids
列表中的每個u
,生成等於字符串"uid = '%s'"
的值,但替代在u
而不是%s
標記「。
這是用於製造SQL查詢? – 2010-04-27 23:46:32