[英]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.