gpt4 book ai didi

python - 连接器/python executemany NoneType

转载 作者:行者123 更新时间:2023-11-29 04:09:05 28 4
gpt4 key购买 nike

我在连接器/python 执行插入查询时遇到一点问题。

我有将数据插入数据库的功能。参数数据是元组列表:[(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()

查询本身有效,在 self.__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( ) 会出错。

最佳答案

只使用%s作为query中的参数标记。不要使用 %d:

query = """
INSERT INTO `sp_urls` (`parent_id`, `url`, `version`, `hits`)
VALUES (%s, %s, %s, %s) ON DUPLICATE KEY UPDATE url=url"""

%s格式 paramstyle defined in the DB-API .它与字符串格式中的 %s 的含义不同。

要使用的正确参数样式取决于数据库驱动程序。 MySQLdb 使用 %s。其他数据库驱动程序,例如 oursqlsqlite3使用 ?

关于python - 连接器/python executemany NoneType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302175/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com