我想將包含二進制數據的字符串對象插入到MySQL blob列中。但是,我不斷收到MySQL語法錯誤。在MySQL blob中插入python二進制字符串對象
我爲調試用小腳本:(不是每一次,但...)
import MySQLdb
import array
import random
conn = MySQLdb.connect(host="localhost", user="u", passwd="p", db="cheese")
cur = conn.cursor()
a = array.array('f')
for n in range(1,5):
a.append(random.random())
bd = a.tostring()
print type(bd) # gives str
query = '''INSERT INTO cheese (data) VALUES (%s)''' % bd
cur.execute(query)
結果
ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '?fJ\x95<=
\xad9>\xf3\xec\xe5>)' at line 1")
的問題顯然是歸結於二進制數據的某些字符, MySQL不喜歡。是否有將二進制數據放入MySQL數據庫的自動防故障方式?
是的,這似乎工作!我真的不明白基本原則。謝謝! – 2013-03-19 17:32:39
不使用Python級別的字符串格式,而是使用特定於MySQL的格式,包括對嵌入查詢的字符串中具有特殊含義的字符進行轉義。 – djc 2013-03-20 10:23:01