我试图用dict来做SQL INSERT.逻辑基本上是:

INSERT INTO table (dict.keys()) VALUES dict.values()

然而,我很难找到正确的语法/流程来实现这一点.这就是我目前拥有的:

# data = {...}
sorted_column_headers_list = []
sorted_column_values_list = []
for k, v in data.items():
    sorted_column_headers_list.append(k)
    sorted_column_values_list.append(v)
sorted_column_headers_string = ', '.join(sorted_column_headers_list)
sorted_column_values_string = ', '.join(sorted_column_values_list)

cursor.execute("""INSERT INTO title (%s) 
            VALUES (%s)""", 
            (sorted_column_headers_string, sorted_column_values_string))

由此我得到了一个SQL异常(我认为这与逗号也包含在我的一些值中这一事实有关).正确的方法是什么?

推荐答案

您希望向查询中添加参数占位符.这可能会满足你的需求:

qmarks = ', '.join('?' * len(myDict))
qry = "Insert Into Table (%s) Values (%s)" % (qmarks, qmarks)
cursor.execute(qry, myDict.keys() + myDict.values())

Mysql相关问答推荐

查找关联数据库表的超集

JOOQ-如何在一个查询中引用多个(但不是所有)表中的所有字段

在MySQL中从非连续数据创建时间线

Google Sheet查询以提取数据并用值替换复选框.(差异)

计算男生的人数和女生的人数.学生是有入学记录的人

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

如何使用等于、喜欢和不等于在 json 字段上编写查询?

即使在某些表中不匹配,如何从 MySQL 中的多个表中 Select 所有记录

Mysql JSON_REMOVE 数组键和值 (MariaDB)

如何在每个国家/地区查询 GHTorrent(类 SQL 语言)的最常用语言

MYSQL如何将虚拟列添加到现有表中

从 SQL 中的左连接和内连接中减go 计数

Mysql 相等性反对 false 或 true

PHP,MySQL 错误:列计数与第 1 行的值计数不匹配

Python MYSQL 更新语句

在 PHP/MySQL 中将日期时间存储为 UTC

MySQL where NOT IN 名称数组?

更改 Laravel 的 created_at 和 updated_at 的名称

为什么 MySQL 自动增量会在插入失败时增加?

cron 启动的 mysqldump 和密码安全