连接器/python executemany非类型
我对连接器/python执行插入查询有点问题 我有将数据插入数据库的功能。参数数据是元组列表: [(2652884,,'5.0.5.239',1),…] 查询本身在self中工作。\uu cnx是初始化的连接。 以下是回溯:连接器/python executemany非类型,python,mysql,mysql-python,Python,Mysql,Mysql Python,我对连接器/python执行插入查询有点问题 我有将数据插入数据库的功能。参数数据是元组列表: [(2652884,,'5.0.5.239',1),…] 查询本身在self中工作。\uu cnx是初始化的连接。 以下是回溯: File "sdi/database/DbValidator.py", line 91, in process_records self.__driver.insert_url(urldata) File "/home/david/workspace/sti
File "sdi/database/DbValidator.py", line 91, in process_records
self.__driver.insert_url(urldata)
File "/home/david/workspace/stickydi/sdi/database/MySQLDriver.py", line 87, in insert_url
cursor.executemany(query, data)
File "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", line 492, in executemany
return self._batch_insert(operation,seq_params)
File "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", line 428, in _batch_insert
fmt = m.group(1).encode(self._connection.charset)
AttributeError: 'NoneType' object has no attribute 'group'
我有一个非常类似的方法,它工作正常,我只是不明白为什么ExecuteMay()会出错。只使用
%s
作为查询中的参数标记。不要使用%d
:
query = """
INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`)
VALUES (%s, %s, %s, %s) ON DUPLICATE KEY UPDATE url=url"""
%s
是格式。在字符串格式中,它与%s
的含义不同
要使用的正确参数样式取决于数据库驱动程序。MySQLdb使用%s
。其他数据库驱动程序(如and)使用?
仅使用%s
作为查询中的参数标记。不要使用%d
:
query = """
INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`)
VALUES (%s, %s, %s, %s) ON DUPLICATE KEY UPDATE url=url"""
%s
是格式。在字符串格式中,它与%s
的含义不同
要使用的正确参数样式取决于数据库驱动程序。MySQLdb使用%s
。其他数据库驱动程序,如和,使用?
您不应该对SQL参数使用%d
。坚持使用%s
,让MySQL连接器处理以下类型:
query = """\
INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE url=url
"""
引述:
paramstyle
字符串常量,说明接口所需的参数标记格式类型。设置为'format'
=ANSI Cprintf
格式代码,例如“…其中name=%s'
。如果映射对象用于conn.execute(),则接口实际使用'pyformat'
=Python扩展格式代码,例如“…其中name=%(name)s'
。但是,API目前不允许在paramstyle中指定多个样式
诚然,对SQL参数使用%s
与Python字符串格式类似,但并不相同。您不应该对SQL参数使用%d
。坚持使用%s
,让MySQL连接器处理以下类型:
query = """\
INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`)
VALUES (%s, %s, %s, %s)
ON DUPLICATE KEY UPDATE url=url
"""
引述:
paramstyle
字符串常量,说明接口所需的参数标记格式类型。设置为'format'
=ANSI Cprintf
格式代码,例如“…其中name=%s'
。如果映射对象用于conn.execute(),则接口实际使用'pyformat'
=Python扩展格式代码,例如“…其中name=%(name)s'
。但是,API目前不允许在paramstyle中指定多个样式
诚然,对SQL参数使用%s
与Python字符串格式类似,但并不相同。我不久前简单地阅读了有关格式约定的内容,我只记得它是类似于C的约定,所以我认为它也适用于%d。很明显,我错了,谢谢你的解释。我不久前简单地阅读了格式化约定,我只记得它是类似C的约定,所以我认为它也适用于%d。我显然错了,谢谢你的解释。