【问题标题】:python: insert the list data into databasepython:将列表数据插入数据库
【发布时间】:2016-06-02 16:22:02
【问题描述】:

有一个名为movie_db的postgresql数据库,并创建了一个名为films的表,如下:

CREATE TABLE movies (
 title       varchar(128) NOT NULL,
 description varchar(256) NOT NULL,
 directors   varchar(128)[],
 roles       varchar(128)[]
 );

我有四个列表,分别是标题、描述、导演、角色。 例如(可能是一个大列表,而不仅仅是三个元素)。

title = ['a', 'b', 'c']
description = ['good love', 'sun beautiful', 'wind go']
director = ['tom', 'jack', 'john']
roles=[['kate', 'back', 'jon'], ['tian', 'den', 'lucy'], ['cruse', 'jodan', 'peter']]

我想将这些列表数据插入到表格films中,我如何使用python sql来处理它,我想得到如下表的结果,请注意角色不是只有一个名字,有时有三个名字,比如kate、back、jon

 title          description    director       roles

  a               good love      tom        kate, back, jon    
  b               sun beautiful  jack       tian,  den,  lucy
  c               wind go        john       cruse, jodan, peter 

我使用以下python代码:

 cur.execute('insert into film_test(title, description, directors, 
 roles)values(%s, %s, %s, %s)', title, description, director, roles)

但是有错误:

 TypeError: function takes at most 2 arguments (5 given)

能否用python插入表格,谢谢!

【问题讨论】:

    标签: python sql postgresql list insert


    【解决方案1】:

    psycopg2 对数组插入有很好的支持。这可能会有所帮助。

    import psycopg2
    
    conn = psycopg2.connect(database="postgres")
    cur = conn.cursor()
    
    title = ['a', 'b', 'c']
    description = ['good love', 'sun beautiful', 'wind go']
    director = ['tom', 'jack', 'john']
    directors = [ [d, ] for d in director ]
    roles=[['kate', 'back', 'jon'], ['tian', 'den', 'lucy'], ['cruse', 'jodan', 'peter']]
    
    sql = "INSERT INTO movies (title, description, directors, roles) VALUES (%s, %s, %s, %s);"
    for obj in zip(title, description, directors, roles):
        cur.execute(cur.mogrify(sql, obj))
    conn.commit()
    
    cur.close()
    conn.close()
    

    【讨论】:

    • 顺便说一句,我创建了董事列表以将单个元素更改为列表类型。(根据您的数据库列定义)。
    • 非常感谢您的帮助,我会报告我的结果!
    • 谢谢!@Nouri,当使用你的代码或方法插入python解析的html数据时,我发现有错误,请看这个问题链接(stackoverflow.com/questions/37566197/…):
    • 谢谢@Gouri,它有效!你能解释一下这段代码的含义:directors = [ [d, ] for d in director],为什么角色不需要这个?谢谢,你是个好人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多