我将数据导入我的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)
您想要的是抽象SQL语句生成的方法。
像SQLAlchemy这样的库可以很好地完成,包括构建DDL,DML和DQL语句的强大方法,而无需直接编写任何SQL。