psycopg2 - 从数组插入表

时间:2018-03-08 20:48:22

标签: python psycopg2

在我的脚本中,我创建了一个相当长的列表,然后我需要插入到我的数据库中。我想知道是否有一种方法可以直接使用数组的内容创建一个SQL语句,而不是过度使用类似的东西:

cursor.execute(
            '''INSERT INTO 
                my_table 
            VALUES (%s, %s, %s, %s, %s, /* 'til almost infinity */);''', 
            (list[0], list[1], list[3]... /* again almost until infinity */))

2 个答案:

答案 0 :(得分:2)

您可以使用string formattingjoin来使用数据list的长度来实现VALUES扩展。然后,您可以只使用listtuple作为实际值。类似的东西:

cursor.execute("""INSERT INTO my_table VALUES({})""".format(','.join('%s' for x in my_list)), data)

答案 1 :(得分:1)

这样的事情怎么样:

cursor.execute(
    '''INSERT INTO 
        my_table 
    VALUES (''' + ','.join(['%s' for x in mylist]) + ''');''', 
    mylist
)

使用','.join(['%s' for x in mylist])为数据创建逗号分隔的占位符字符串。