【发布时间】:2017-11-13 21:25:49
【问题描述】:
我正在尝试使用 psycopg2 将批量插入到 postgres 数据库中。我正在使用 %s 和元组列表,但失败并出现以下错误:
File ".../python3.6/site-packages/psycopg2/extras.py", line 1183, in execute_batch
sqls = [cur.mogrify(sql, args) for args in page]
File ".../python3.6/site-packages/psycopg2/extras.py", line 1183, in <listcomp>
sqls = [cur.mogrify(sql, args) for args in page]
TypeError: not all arguments converted during string formatting
这是我的代码:
import psycopg2
import psycopg2.extras
conn = psycopg2.connect(
database='mydb',
user='name',
password='pass')
cur = conn.cursor()
query = "INSERT INTO my_table (tweet_id, user_id, time, text,
reply_to_user_id, reply_to_tweet_id, reply_to_handle, is_retweet,
is_quote, quote_usr_id, quote_usr_handle, quote_id, quote_text,
retweet_usr_id, retweet_usr_handle, retweet_id, longitude, latitude,
location, time_zone) VALUES (%s);"
#vals are values to insert, a list of tuples
vals = [(123, 123, datetime.datetime(2017, 1, 18, 17, 12, 33),
"'Some Text'", None, None, None, None, None, None, None, None,
None, 1234, "'username'", 1234, None, None, "'Somewhere'",
"'Pacific Time (US & Canada)'"),
(321, 321, datetime.datetime(2017, 1, 18, 15, 43, 19),
"'More text'", 321, 321, "'person'", None, None, None, None, None,
None, None, None, None, None,None, "'faraway'",
"'Pacific Time (US & Canada)'")]
psycopg2.extras.execute_batch(cur,query,vals)
我也尝试用“NULL”字符串替换 Nones 无济于事。
vals 是一个元组列表,所以它不是 faq 和 various stackoverflow posts. 的常见问题
我希望这是我插入的其中一种类型的问题,但不知道是哪一种。我已经将 psycopg2 python 与 sql datatype conversion chart 进行了比较,似乎应该检查一下。
【问题讨论】:
-
值 (%s,%s, .... %s) ?
-
20 个值,我认为您想在查询中明确传递值的数量。
-
是的,你是对的!我不知道我是怎么错过的!如果您回答,我会将其标记为正确。
-
很高兴我能帮上忙
标签: python postgresql psycopg2