0
conn = MySQLdb.connect(hostip, username, password, dbname)
cur = conn.cursor()
tablename = raw_input("Choose your table name: ")
if tablename:
cur.execute("SELECT * FROM %s" % tablename)
rows = cur.fetchall()

desc = cur.description
fields = [j[0] for j in desc]

for row in rows:
    for kword in dust:
        for fs in fields:
            cur.execute("SELECT * FROM %s WHERE %s LIKE '%%s%'" % (tablename, fs, kword))

conn.close()
#

簡単なコードのように、mysqldb で %% PlaceHolder を使用してパラメータを渡したいのですが、うまくいきません。'%%s%' 、最初と最後の '%' は 'like' を使用する SQL 構文です。

4

1 に答える 1

0

%sと{}を使用して文字列をフォーマットするには、次の2つの方法があります。

print "key:%(key)s value:%(value)s" % {"key":"key1","value":"value1"}
print "{{keep me}} key:{key} value:{value}".format(**{"key":"key1","value":"value1"})

問題を解決するには:

>>> "SELECT * FROM {tablename} WHERE {field} LIKE '%{keyword}%'".format(**{"tablename":"UserTable","field":"NameField","keyword":"Wuliang"})
"SELECT * FROM UserTable WHERE NameField LIKE '%Wuliang%'"
于 2012-09-23T04:17:06.230 に答える