Ree*_*een 1 python postgresql psycopg2
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
我也试过用“NULL”字符串替换 None 无济于事。
瓦尔斯是一个元组列表,所以它不是从常见问题FAQ和各种 计算器的职位。
我希望这是我插入的一种类型的问题,但我不知道是哪一种。我已经将 psycopg2 python 与 sql数据类型转换图表进行了比较,似乎应该检查一下。
显式地将值的数量传递到您的查询中。
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,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6331 次 |
| 最近记录: |