Как делать запросы к mysql на python3.5?

Проблема такая. Я получаю json строку с данными.
Преобразовываю ее
data= json.loads(response)

Эти данные мне необходимо вставить в БД mysql.
Пытаюсь вставить за один запрос 20 строк.

INSERT INTO table_name (col1, col2, ... col20)
VALUES (...), (...), ...


Колонок в этой таблице много.
Значения разных типов: int, string, null, bool.
Плюс еще все данные из json-а надо как то экранировать/убирать тэги.

Как по-человечески сделать строку запроса к БД?

Пока я перебираю в циклах этот json. Выбираю нужные значения. Объединяю их с помощью

",".join(...)

Но это костыли...)
Нет ли каких-нибудь библиотек с методами типа insert(). Чтобы они сами экранировали параметры и генерировали sql запрос?
  • Вопрос задан
  • 759 просмотров
Решения вопроса 1
kovalenko_jul_s
@kovalenko_jul_s Автор вопроса
Свою проблему я решила с помощью MySQLdb.

1. Распарсила json-файл в двумерный список
values = [[a1,a2,...], [b1, b2,...], ....]
2. Сформировала строку запроса
query = "INSERT INTO ads_irr_ru_content (col1, col2, .... ,col5) VALUES "  + 
    ",".join("(%s,%s,%s,%s,%s)" for _ in values)

3. Собрала вставляемые данные
flattened_values = [item for sublist in values for item in sublist]

4. Вставила данные:)
cur.execute(query, flattened_values)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@newpy
web-dev
оформлю уже тогда вместо комментариев =)
много библиотек, но из последнего для работы с БД мне понравилась

1. records, её автор Kenneth Reitz автор библиотеки requests.

2. peewee вторая вполне известная небольшая и чем-то похожая на django ORM или Alchemy
Ответ написан
Комментировать
@zalupadrakona
1111
sql = ('''INSERT INTO users (login, password) VALUES (%s, %s)''')
data = (login, password)


Примерно так можно попробовать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы