我想在数据库中保存一堆元组
cursor = cnx.cursor()
query = """INSERT INTO `TableA`
(`clientid`,
`createddatetime`,
`siteid`,...)
VALUES(?,?,?,...)"""
cursor.executemany(query, listTosave)
MylistTosave包含元组列表,如
[('AS0001', '1170', 1, '1', 'Unknown', 442, 1, datetime.datetime(2018, 5, 28, 23, 0), datetime.datetime(2018, 3, 15, 11, 15), datetime.datetime(2018, 3, 15, 10, 56), datetime.datetime(2018, 5, 28, 23, 18, 26), datetime.datetime(2018, 5, 28, 23, 59, 22), Decimal('15177.3184'), Decimal('15185.7562'), Decimal('8.4378'), Decimal('1313.0547'), Decimal('1313.6179'), Decimal('0.5632'), Decimal('0.0000'), Decimal('0.0000'), Decimal('0.0000'), Decimal('0.0000'), Decimal('0.0000'), Decimal('0.0000'), Decimal('24.6518'), Decimal('24.6518'), 15101.7062, 0.0, 0.0, 0.0, 24.6563), (........... )]
当我试图拯救时,我得到了
File "/tmp/pymodules/pymysql/cursors.py", line 194, in executemany
File "/tmp/pymodules/pymysql/cursors.py", line 194, in <genexpr>
File "/tmp/pymodules/pymysql/cursors.py", line 163, in execute
File "/tmp/pymodules/pymysql/cursors.py", line 142, in mogrify
TypeError: not all arguments converted during string formatting
为什么会出现这个错误?你知道吗
编辑:我还将datetime对象/十进制对象转换为字符串。我的新单子是这样的
[('AS0001', '1170', '1', '1', 'Unknown', '442', '1', '2018-05-28 23:00:00', '2018-03-15 11:15:00', '2018-03-15 10:56:00', '2018-05-28 23:18:26', '2018-05-28 23:59:22', '15177.3184', '15185.7562', '8.4378', '1313.0547', '1313.6179', '0.5632', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '0.0000', '24.6518', '24.6518', '15101.7062', '0.0', '0.0', '0.0', '24.6563'), (.....)]
但我还是犯了同样的错误
根据返回的错误推测,这可能与存储在列表中的datetime对象有关,没有正确地转换为字符串表示形式。用
str()
包装这些可能是问题的原因。你知道吗请注意以下示例:
另一个选项可以通过将列表元素使用json.dumps字符串格式来消除错误。但这取决于您希望如何在数据库中存储数据。请参见以下内容:
检索此数据时,可以使用json.loads将其加载回python对象格式
这是一个最小的例子,我得到了工作。你知道吗
确保您有一个元组列表,并且在查询字符串中使用
%s
相关问题 更多 >
编程相关推荐