У меня есть список кортежей, которые я хочу загрузить в мою базу данных. Я хочу сделать это с одним запросом, так что мне не нужно открывать соединение, пока я разбираю каждый кортеж.Импорт списка кортежей в Postgres через Python
Пример моего списка кортежей следующий (этот список будет значительно длиннее): tuple_list = [(u'17 ', u'1', u'2 ', u'2'), (u '17', u'2 ', u'1', u'4 ')]
Я хочу написать один запрос в postgres, который будет принимать этот tuple_list и работать через список, чтобы заполнить таблицу под названием «Прогнозы», в одном вызове к дБ.
Одиночный вызов выглядит следующим образом:
insert into 'Predictions' (userid, fixture_no, home_score, away_score) values (17, 1, 2, 2)
Я смотрел в преобразовании моего кортежа в файл XML, но интересно, если есть лучший способ сделать это только в Postgres, используя список кортежей?
Если нет, файл XML, мне удалось произвести внешний вид, как это ...
<root>
<User_Id/>
<Fix_No/>
<Home_Score/>
<Away_Score/>
<User_Id>17</User_Id>
<Fix_No>1</Fix_No>
<Home_Score>2</Home_Score>
<Away_Score>2</Away_Score>
<User_Id>17</User_Id>
<Fix_No>2</Fix_No>
<Home_Score>1</Home_Score>
<Away_Score>4</Away_Score>
</root>
Моя главная цель состоит в том, чтобы направить все свои предсказания в базу данных в одном кадре, а не делать многочисленные звонки, которые будут заставьте мое веб-приложение работать медленнее.
Любые мысли или советы были бы замечательными!
Я новичок в Postgres, так что комментарий очень полезно. Поскольку у моего списка кортежей может быть 5 кортежей или даже 50 кортежей, как я могу написать запрос, который адаптируется к числу кортежей, которые я передаю ему? – LemusThelroy
Это фантастический ответ. Спасибо. Если этот запрос находится в моем коде Python, считаете ли вы, что это будет безопасно от SQL-инъекции? Поскольку tuple_list поступает из пользовательского ввода из веб-приложения. – LemusThelroy
@LemusThelroy Вы должны убедиться, что все вставленные данные были правильно экранированы. Лучший способ - создать хранимые процедуры. Этот пример НЕ сохраняется! – salomonderossi