【问题标题】:Inserting from python to MariaDB dynamic column (COLUMN_CREATE)从 python 插入到 MariaDB 动态列 (COLUMN_CREATE)
【发布时间】:2017-10-20 12:08:39
【问题描述】:

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,COLUMN_CREATE('\"Y\",1'))' 在第 1 行

从上面的错误消息中,我看到什么\(反斜杠)是自动插入的(由驱动程序?)

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

【问题讨论】:

  • data 这样的结构通过“%s”格式化时,Python 会发生什么?
  • 这个包解决了这个问题:pypi.python.org/pypi/mariadb-dyncol它将python字典转换为内部MariaDB动态列格式
  • 如果是这样,那么将其作为您问题的答案提供。 (可以自行回答。)

标签: python mariadb


【解决方案1】:

这个包解决了这个问题:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2020-06-10
    • 2018-09-23
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多