2017-10-19 37 views
0

MariaDB的允許使用內部INSERT https://mariadb.com/kb/en/library/dynamic-columns/從蟒插入到MariaDB的動態柱(COLUMN_CREATE)

COLUMN_CREATE功能在BLOB列插入的名稱 - 值對實施例

CREATE TABLE T (id int, v blob); 
INSERT INTO T (id,v) VALUES(1, COLUMN_CREATE('color', 'blue', 'size', 'XL')); 

我無法從蟒做到這一點:

import mysql.connector 
cnx = mysql.connector.connect (host=.., user=‘.., password=.., port=.., database=..) 
cursor = cnx.cursor() 
SQL='INSERT INTO T (id,v) VALUES(%s,COLUMN_CREATE(%s))' 
data=[(10,'"X",2'),(20,'"Y",1')] # <---- I think problem is here 
cursor.executemany(SQL,data) 
cursor.close() 
cnx.commit() 
cnx.close() 

我得到了一個錯誤:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')),(20,COLUMN_CREATE('\"Y\",1'))' at line 1

從上述錯誤消息我看到\(反斜槓)被自動插入(通過驅動程序?)

如何將數據傳遞給瑪麗亞的COLUMN_CREATE功能,使其工作? 我試圖改變單引號和雙引號:它沒有幫助。

+0

當像'data'的結構通過「%s的格式在Python會發生什麼「? –

+0

該軟件包解決了這個問題:https://pypi.python.org/pypi/mariadb-dyncol 它將python字典轉換爲內部MariaDB動態列格式 – user510040

+0

如果是這樣,那麼將其作爲答案提供給您的問題。 (可以自行回答。) –

回答