【发布时间】:2015-11-13 06:29:45
【问题描述】:
调用:
INSERT IGNORE INTO standard_group (group_name, subject, grade, country, state) VALUES (%(group_name), %(subject), %(grade), %(country), %(state));
与
('Arizona Social Studies Standards', 'Social Studies', '1', 'United States', 'AZ')
例如:
print group_columns
print group_sql
print group
cur.execute(group_sql, dict(zip(group_columns, group)))
但我总是得到:
['group_name', 'subject', 'standard_category', 'standard_sub_category', 'standard_name', 'standard_description', 'grade', 'country', 'state', 'is_common_core', 'is_state_standard']
INSERT IGNORE INTO standard_group (group_name, subject, grade, country, state) VALUES (%(group_name), %(subject), %(grade), %(country), %(state));
('Arizona Social Studies Standards', 'Social Studies', '1', 'United States', 'AZ')
Traceback (most recent call last):
File "standards-import/simport.py", line 167, in <module>
cur.execute(group_sql, dict(zip(group_columns, group)))
File "/Library/Python/2.7/site-packages/mysql/connector/cursor.py", line 507, in execute
self._handle_result(self._connection.cmd_query(stmt))
File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 722, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 640, in _handle_result
raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%(group_name), %(subject), %(grade), %(country), %(state))' at line 1
我已经尝试使用命名参数? 和%s,然后得到
- 并非所有参数都使用
- 命名参数的参数数量错误
- SQL 语法
发生了什么事??我错过了什么???
【问题讨论】:
-
当您使用
%(group_name)时,替换不应该在字典而不是列表中吗? -
dict(zip(group_columns, group))将它们变成一个字典(具有正确的键名)。其他问题仍然存在,因为我也不能使用 list +%s或?格式。 -
你能粘贴你的python脚本以便我们查看缩进等吗?
标签: python mysql prepared-statement named-parameters