簡體   English   中英

使用python列表在Postgres中插入數據

[英]Inserting data in postgres using a python list

我想在插入查詢中輸入一個python列表,然后在postgres中輸入數據,我正在使用executemany,但仍然收到錯誤“ TypeError:並非在格式化字符串時轉換了所有參數”

twitter_data = ['eOc6ZEQiNCo', u'TYihcUfotnM', u'7vneoA-vY8U', '73RRIEXsdyE']    
query = "INSERT INTO videograbber (video_id) VALUES (%s)"   
cur.executemany("INSERT INTO videograbber (video_id) VALUES (%s)",[twitter_data])
con.commit()

有人可以告訴我我在做什么錯

您的列表必須是元組列表。

您尚未顯示twitter_data的值是什么,但我懷疑它是一個字符串。

您想要類似的東西:

twitter_data = [ ('video_id_1',), ('video_id_2',) ]

注意尾隨逗號,使它們成為1個元組,而不僅僅是在表達式周圍加上括號。 這是包含(str)的1元組的2元素列表,因此,當psycopg2迭代列表中的元組時,每個元組將獲得預期的一個元素。

如果您只寫了[ ('video_id_1'), ('video_id_2') ][ ('video_id_1'), ('video_id_2') ]生成一個包含兩個str對象的2元素列表。 這些是可迭代的,因此psycopg2將嘗試對其進行迭代,將每個字符轉換為查詢參數。 它的參數少於字符,因此會產生您顯示的錯誤。

您可以列表轉換str成1元組的列表str與列表理解,如:

twitter_data_tuples = [ (x,) for x in twitter_data ]

您使用"INSERT INTO videograbber (video_id) VALUES (%s)" ,但%s是格式標記。 應該是"INSERT INTO videograbber (video_id) VALUES (?)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM