Python + MySQL 数据库根据要插入的列数动态插入查询
Python + MySQL DB dynamic insert query based on number of columns to insert
我是编程的新手(最近学习的函数),并且发现自己 re-writing 相同的 "insert into mysql table" 函数(下面)从一个脚本到另一个脚本......主要是修改这些两部分 - (name,insert_ts) &&& VALUES (%s, %s)
是否有一种好方法 re-write 下面接受任意数量的值,基于包含值的元组的长度以及插入列 headers 基于 'labels' 名单? VALUES (%s, %s) 和这部分 (name,insert_ts)
list_of_tuples = [] #list of records to be inserted.
#take a list of dictionaries - and create a list of tuples in proper format/order
for dict1 in output:
one_list = []
one_list.extend((dict1['name'],dict1['insert_ts']))
list_of_tuples.append(tuple(one_list))
labels = ['name', 'insert_ts']
#db_write accepts table name as str, labels as str, and output as list of tuples
def db_write(table,labels,output):
local_cursor.executemany(""" INSERT INTO my_table
(name,insert_ts) #this is pulled from 'labels'
VALUES (%s, %s) #number of %s comes from len(labels)
"""
, list_of_tuples)
local_db.commit()
local_db.close()
#print 'done posting!'
或者,有没有更好的方法来完成我想做的事情,使用 mysqldb?
提前谢谢大家!
经过一些经验(3 个月,呵呵),想向大家介绍似乎工作得很好的解决方案!
我没有使用我的sqldb,而是花了一些时间学习如何使用 SQL Alchemy python 包,并且会推荐每个人都这样做!
SQL Alchemy 允许您:
1) 在 python 代码中定义一个 table(使用 Excel 得出列名等)。
2)最重要!您可以将字典传递给 SQL Alchemy,只要字典的键名与 table 的键名匹配,所有内容都会神奇地 post 编辑到您的 SQL table。如果你的 sql table 中有 60 列,但你的字典只有两个键 - BAM,SQL Alchemy 会处理所有事情,而 post 只是两个值,并将 MySQL 中的其他值留空。 神奇!
我是编程的新手(最近学习的函数),并且发现自己 re-writing 相同的 "insert into mysql table" 函数(下面)从一个脚本到另一个脚本......主要是修改这些两部分 - (name,insert_ts) &&& VALUES (%s, %s)
是否有一种好方法 re-write 下面接受任意数量的值,基于包含值的元组的长度以及插入列 headers 基于 'labels' 名单? VALUES (%s, %s) 和这部分 (name,insert_ts)
list_of_tuples = [] #list of records to be inserted.
#take a list of dictionaries - and create a list of tuples in proper format/order
for dict1 in output:
one_list = []
one_list.extend((dict1['name'],dict1['insert_ts']))
list_of_tuples.append(tuple(one_list))
labels = ['name', 'insert_ts']
#db_write accepts table name as str, labels as str, and output as list of tuples
def db_write(table,labels,output):
local_cursor.executemany(""" INSERT INTO my_table
(name,insert_ts) #this is pulled from 'labels'
VALUES (%s, %s) #number of %s comes from len(labels)
"""
, list_of_tuples)
local_db.commit()
local_db.close()
#print 'done posting!'
或者,有没有更好的方法来完成我想做的事情,使用 mysqldb?
提前谢谢大家!
经过一些经验(3 个月,呵呵),想向大家介绍似乎工作得很好的解决方案!
我没有使用我的sqldb,而是花了一些时间学习如何使用 SQL Alchemy python 包,并且会推荐每个人都这样做!
SQL Alchemy 允许您:
1) 在 python 代码中定义一个 table(使用 Excel 得出列名等)。
2)最重要!您可以将字典传递给 SQL Alchemy,只要字典的键名与 table 的键名匹配,所有内容都会神奇地 post 编辑到您的 SQL table。如果你的 sql table 中有 60 列,但你的字典只有两个键 - BAM,SQL Alchemy 会处理所有事情,而 post 只是两个值,并将 MySQL 中的其他值留空。 神奇!