Запись в MySQL с Python без использования строк SQL - PullRequest
0 голосов
/ 28 февраля 2019

Я импортирую данные в свою среду Python3 и затем записываю их в базу данных MySQL.Однако существует множество различных таблиц данных, поэтому выписывание каждого оператора INSERT на самом деле не прагматично, плюс в некоторых есть более 50 столбцов.

Есть ли хороший способ создать таблицу в MySQL непосредственно изфрейм данных, а затем отправлять команды вставки в ту же таблицу, используя фрейм данных того же формата, без необходимости фактически вводить все имена столбцов?Я начал пытаться вызывать имена столбцов, форматировать их и объединять все как строки, но это очень грязно.

В идеале, есть функция, которая напрямую обрабатывает это.Например:

apiconn.request("GET", url, headers=datheaders)

#pull in some JSON data from an API
eventres = apiconn.getresponse()
eventjson = json.loads(eventres.read().decode("utf-8"))

#create a dataframe from the data
eventtable = json_normalize(eventjson)


dbconn = pymysql.connect(host='hostval',
user='userval',
passwd='passval',
db='dbval')
cursor = dbconn.cursor()

sql = sqltranslate(table = 'eventtable', fun = 'append') 
#where sqlwrite() is some magic function that takes a dataframe and 
#creates SQL commands that pymysql can execute.

cursor.execute(sql)

1 Ответ

0 голосов
/ 08 марта 2019

То, что вы хотите, - это способ абстрагировать генерацию операторов SQL.

Библиотека, подобная SQLAlchemy , хорошо справится с работой, включая мощный способ создания DDL, DML,и операторы DQL без необходимости непосредственного написания любого SQL.

...