我有一个Connector/python执行插入查询的问题。连接器/ python executemany无类型
我有将数据插入数据库的功能。参数数据元组的列表: [(2652884, 'http://www.example.com/', '5.0.5.239',1),...]
def insert_url(self, data):
query = "INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`) VALUES (%d, %s, %s, %d) ON DUPLICATE KEY UPDATE url=url"
try:
cursor = self.__cnx.cursor()
cursor.executemany(query, data)
except (mysql.connector.errors.IntegrityError) as err:
print("Query syntax error:", err, file=sys.stderr)
except (mysql.connector.errors.ProgrammingError) as err:
print("Programming err:{0}".format(err))
finally:
cursor.close()
工作本身的查询,自.__ CNX初始化连接。 这里的回溯:
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'
我有一个非常类似的方法,它的工作原理确定,我只是不明白,为什么executemany()出错。
前段时间我非常简要地阅读了格式化约定,我只记得它是类C的约定,所以我认为它也适用于%d。我显然是错的,谢谢你的解释。 – dakov