2015-07-20 5 views
1

Я пытаюсь определить самый простой способ вставки данных из списка python в таблицу PostgreSQL.Как вставить список python в таблицу Postgres

Таблица My PostgreSQL была создана следующим образом;

CREATE TABLE results(Id serial primary key, T0 timestamp, T1 real, T2 real, T3 real, T4 real, Total real, Result text); 

Мой список python отформатирован следующим образом;

ResultsList = ['2015-07-20 16:06:05', 0.16, 5.22, 5.81, 0.69, 11.90, 'OK'] 

Я использую следующий код python для записи списка в таблицу результатов;

import psycopg2 as dbapi 
con = dbapi.connect(database='xxx', user='xxx') 
cur = con.cursor() 
cur.execute("INSERT into results VALUES (%s);", (ResultsList),) 
con.commit() 

Интерпретатор выплевывает следующую ошибку;

Error not all arguments converted during string formatting 
Process finished with exit code 0 

Любые подсказки будут оценены.

Спасибо :)

+0

Довольно уверен, что есть ошибка синтаксиса питона там, с той Запятая – Eric

ответ

0

Как ResultList уже последовательность, вам не нужно, чтобы попытаться преобразовать его в кортеж. Что вам действительно нужно указать нужное количество значений в вашем SQL заявление:

cur.execute("INSERT into results(T0, T1, T2, T3, T4, Total, Result) VALUES (%s, %s, %s, %s, %s, %s, %s)", ResultList) 

Более подробно об этом, читайте the docs.

+1

Это не будет работать. Вам нужно будет указать имена столбцов, иначе он будет начинаться с столбца id. –

+0

Это не сработает. Вы должны указать имена столбцов. – liushuaikobe

+0

@ DanielePantaleone Нам это нужно, потому что не все из них указаны, не так ли? В противном случае мы могли бы их опустить. –

-1

ЗАГРУЗКА МНОЖЕСТВЕННЫХ ЗНАЧЕНИЙ ИЗ СПИСКА В СТОЛБЫ ТАБЛИЦЫ. Я также показал, как подключиться к базе данных postgres через python и создать таблицу в postgres.

list_1=[39,40,41,42,43] #list to load in postgresql table 


conn=psycopg2.connect(database="t2_reporting_tool_development",user="xyz",host="localhost") 
cur = conn.cursor() 
cur.execute("create table pg_table (col1 int)") 

#LOADING dealers_list IN pg_table TABLE 
cur.execute("TRUNCATE TABLE pg_table") 
for ddeci in dealers_list: 
    cur.execute("INSERT into pg_table(col1) VALUES (%s)", [ddeci]) 
Смежные вопросы