2016-06-01 5 views
0

есть база данных с именем PostgreSQL movie_db и создал таблицу с именем фильмов следующим образом:питона: вставить данные в базу данных списка

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']] 

Я хочу, чтобы вставить этот список данные в фильмы таблицы, как я мог бы использовать питон SQL, чтобы справиться с этим, я хочу, чтобы получить результат, как в следующей таблице, пожалуйста, обратите внимание, что роли не только имеют одно название, иногда имеет три названия, такие как Катя, обратно ДЖЕН

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) 

Не могли бы вы использовать питон для вставки в таблицу, спасибо!

ответ

2

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() 
+1

BTW, я создал список директоров, чтобы изменить отдельные элементы на тип списка (в соответствии с определением столбца базы данных). – Gouri

+0

Я очень благодарю за вашу помощь, я сообщу свой результат! –

+0

Спасибо @ Nouri, когда вы используете свой код или метод для вставки html-данных, которые анализировали на python, я обнаружил, что есть ошибка, см. Ссылку на этот вопрос (http://stackoverflow.com/questions/37566197/python-parse -html-data-and-store-in-the-postgresql-database): –

Смежные вопросы