Я пытаюсь вставить проанализированные данные dta в базу данных postgresql, каждая строка которой является отдельной таблицей переменных, и она работала до тех пор, пока я не добавил во второй строке «recodeid_fk». Ошибка, которую я получаю при попытке запустить этот код: pg8000.errors.ProgrammingError: ('ERROR', '42601', 'синтаксическая ошибка в или рядом с "imp"').Ошибка синтаксиса при попытке вставить данные в postgresql
В конце концов, я хочу иметь возможность одновременно анализировать несколько файлов и вставлять данные в базу данных, но если кто-нибудь может помочь мне понять, что происходит сейчас, это будет фантастично. Я использую Python 2.7.5, statareader - из записей разработки pandas 0.12, и у меня очень мало опыта в Python.
dr = statareader.read_stata('file.dta')
a = 2
t = 1
for t in range(1,10):
z = str(t)
for date, row in dr.iterrows():
cur.execute("INSERT INTO tblv00{} (data, recodeid_fk) VALUES({}, {})".format(z, str(row[a]),29))
a += 1
t += 1
conn.commit()
cur.close()
conn.close()
** НИКОГДА не интерполируйте значения непосредственно в SQL, как это **, вы оставите себя критически уязвимым для [SQL injection] (bobby-tables.com). Кроме того, в будущем, пожалуйста, сообщите о своей версии PostgreSQL в вопросах. Благодаря! –
Кроме того, всякий раз, когда вы видите, что вы что-то делаете с SQL в цикле, подумайте «как я могу превратить это в заданную операцию». В этом случае я бы предложил использовать команду 'COPY' через поддержку' COPY' Psycopg2 для массового ввода строк в один проход от генератора. –