使用 python 字典插入 mysql
Use a python dictionary to insert into mysql
我正在尝试从字典中获取数据(示例已简化以便于阅读)并将其插入到 mysql 数据库中。
我有以下代码。
import pymysql
conn = pymysql.connect(server, user , password, "db")
cur = conn.cursor()
ORFs={'E7': '562', 'E6': '83', 'E1': '865', 'E2': '2756 '}
table="genome"
cols = ORFs.keys()
vals = ORFs.values()
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
print sql
print ORFs.values()
cur.execute(sql, ORFs.values())
cur.close()
conn.close()
print sql
声明returns
INSERT INTO genome (E7,E6,E1,E2) VALUES(562,83,865,2756 )
当我直接在 mysql 命令行中键入它时,mysql 命令起作用。但是当我 运行 python 脚本时,我得到一个错误:
<type 'exceptions.TypeError'>: not all arguments converted during string formatting
args = ('not all arguments converted during string formatting',)
message = 'not all arguments converted during string formatting'
一如既往,我们将不胜感激任何建议。
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
这个 SQL 包含值,cur.execute(sql, ORFs.values())
也有值。
所以,应该是cur.execute(sql)
。
之前的答案不适用于非字符串字典值。这个是修改版。
format_string = ','.join(['%s'] * len(dict))
self.db.set("""INSERT IGNORE INTO listings ({0}) VALUES ({1})""".format(", ".join(dict.keys()),format_string),
(dict.values()))
在我的例子中,我将跳过空列。
data = {'k': 'v'}
fs = ','.join(list(map(lambda x: '`' + x + '`', [*data.keys()])))
vs = ','.join(list(map(lambda x: '%(' + x + ')s', [*data.keys()])))
sql = "INSERT INTO `%s` (%s) VALUES (%s)" % (table, fs, vs)
count = cursor.execute(sql, data)
我正在尝试从字典中获取数据(示例已简化以便于阅读)并将其插入到 mysql 数据库中。 我有以下代码。
import pymysql
conn = pymysql.connect(server, user , password, "db")
cur = conn.cursor()
ORFs={'E7': '562', 'E6': '83', 'E1': '865', 'E2': '2756 '}
table="genome"
cols = ORFs.keys()
vals = ORFs.values()
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
print sql
print ORFs.values()
cur.execute(sql, ORFs.values())
cur.close()
conn.close()
print sql
声明returns
INSERT INTO genome (E7,E6,E1,E2) VALUES(562,83,865,2756 )
当我直接在 mysql 命令行中键入它时,mysql 命令起作用。但是当我 运行 python 脚本时,我得到一个错误:
<type 'exceptions.TypeError'>: not all arguments converted during string formatting
args = ('not all arguments converted during string formatting',)
message = 'not all arguments converted during string formatting'
一如既往,我们将不胜感激任何建议。
sql = "INSERT INTO %s (%s) VALUES(%s)" % (
table, ",".join(cols), ",".join(vals))
这个 SQL 包含值,cur.execute(sql, ORFs.values())
也有值。
所以,应该是cur.execute(sql)
。
之前的答案不适用于非字符串字典值。这个是修改版。
format_string = ','.join(['%s'] * len(dict))
self.db.set("""INSERT IGNORE INTO listings ({0}) VALUES ({1})""".format(", ".join(dict.keys()),format_string),
(dict.values()))
在我的例子中,我将跳过空列。
data = {'k': 'v'}
fs = ','.join(list(map(lambda x: '`' + x + '`', [*data.keys()])))
vs = ','.join(list(map(lambda x: '%(' + x + ')s', [*data.keys()])))
sql = "INSERT INTO `%s` (%s) VALUES (%s)" % (table, fs, vs)
count = cursor.execute(sql, data)