从python插入到MariaDB动态列(COLUMN_CREATE)

时间:2017-10-19 03:57:21

标签: python mariadb

MariaDB允许在INSERT中使用COLUMN_CREATE函数在blob列中插入名称 - 值对 https://mariadb.com/kb/en/library/dynamic-columns/

实施例

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

我没能从python中做到这一点:

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):你有一个   SQL语法错误;查看与您的手册相对应的手册   MariaDB服务器版本用于正确的语法使用附近   ')),(20,第1行的COLUMN_CREATE('\“Y \”,1'))'

从上面的错误信息中我看到自动插入了什么\(反斜杠)(通过驱动程序?)

如何将数据传递给Maria的COLUMN_CREATE函数以使其正常工作? 我试图改变单引号和双引号:它没有帮助。

1 个答案:

答案 0 :(得分:0)

此软件包解决了这个问题:

https://pypi.python.org/pypi/mariadb-dyncol

它将python字典转换为内部MariaDB动态列格式