Предположим, у меня есть список столбцов в питона равной длины (в примере, приведенном ниже, каждый столбец имеет 4 элемента, но в моей реальной работе каждый столбец имеет около 500+ элементов):преобразования столбцов в базе данных PostgreSQL
col0 = [1, 12, 23, 41] # also used as a primary key
col1 = ['asdas','asd', '1323', 'adge']
col2 = [true, false, true, true]
col4 = [312.12, 423.1, 243.56, 634.5]
и у меня есть таблица PostGreSQL уже определена, со столбцами: Col0 (целое число, а также первичный ключ), cOL1 (характер изменения), Col2 (булево), Col3 (числовое)
Я написал следующий код для подключения к базе данных postgresql (которая, казалось, работала нормально):
import psycopg2
...
conn = psycopg2.connect("dbname='mydb' user='myuser' host='localhost' password = 'mypwd')
cur = conn.cursor()
Теперь предположим, что я хочу, чтобы раздвинуть столбцы PostGreSQL таблицы myt
, где я хочу, чтобы строки в населенной как:
Col1 Col2 Col3 Col4
1 'asdas' true 312.12
12 'asd' false 423.1
...
Я видел примеры на SO such as this one где пример для чтения из файла CSV:
for row in reader:
cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (variable1, variable2))
(a) Могу ли я принять что-то подобное для моего случая? Будет ли это работать:
for i in range(0, len(col0)):
cur.execute("INSERT INTO myt (Col1, Col2, Col3, Col4) VALUES (%??, %s, %??, %f)", (col0[i], col1[i], col2[i], col3[i]))
(б) Если да, то есть спецификатор типа для питона целого числа, булева, поплавок типа, когда соответствующие типов PostgreSQL являются целыми числами, логические и числовые?
(c) Кроме того, что, если у меня есть 40 таблиц, а не 4 таблицы. Должен ли я написать длинную строку:
"INSERT INTO myt (Col1, Col2, ..., Col40) VALUES (%d, %s, ..., %f)", (col0[i], ...))
вы спрашиваете Severa Там есть разные вопросы. – Jasen