[英]Writing Python Dictionary to MySQL with multiple values per key
我正在尝试将 python 字典写入 MySQL ,每个键有多个值,尝试使用类似于此的内容:
placeholders = ', '.join(['%s'] * len(myDict))
columns = ', '.join(myDict.keys())
sql = "INSERT INTO %s ( %s ) VALUES ( %s )" % (table, columns, placeholders)
# valid in Python 2
cursor.execute(sql, myDict.values())
# valid in Python 3
cursor.execute(sql, list(myDict.values()))
我收到以下错误:
Traceback (most recent call last):
File "./grabber.py", line 86, in <module>
cursor.execute(sql, list(relay_stats.values()))
File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1241, 'Operand should contain 1 column(s)')
字典看起来像这样:
server01 (0.0, 0.0, '2020-07-07 15:01:54')
server02 (0.0, 0.0, '2020-07-07 15:01:54')
server03 (0.0, 0.0, '2020-07-07 15:01:54')
server04 (0.0, 0.0, '2020-07-07 15:01:54')
MySQL 表:
+-------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| server_name | char(1) | YES | | NULL | |
| file_count | float | YES | | NULL | |
| file_size | float | YES | | NULL | |
| curtime | datetime | YES | | NULL | |
+-------------+----------+------+-----+---------+----------------+
我怎样才能插入这个,所以每个值都是数据库中的一列,同时将 0.0 值保持为整数?
与其创建另一个字典,不如创建一个包含值的元组列表:
values = []
for key, value in sorted(servers.items()):
values.append((key, fc_grab(value), fs_grab(value), curtime))
现在您可以创建您的 SQL
placeholders = ', '.join(['%s'] * len(values[0]))
columns = ', '.join(['server_name', 'file_count', 'file_size', 'curtime'])
sql = "INSERT INTO %s ( %s ) VALUES ( %s )" % (table, columns, placeholders)
cursor.executemany(sql, values)
cursor.executemany
在单个 python 方法调用中插入所有行,而不是在循环中执行cursor.execute
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.