如何根据不同类型表的输入创建插入语句?
How to create a insert statement based on the input of different type of tables?
我编写了一个使用 mysql 连接器将数据插入到 mysql 中的 table 的函数。
def insert_row(data, table, conn):
"""Insert new row of data receieved.
"""
cursor = conn.cursor()
query = ("INSERT INTO " + table + " "
"(temp, humidity)"
" VALUES (%(temp)s, %(humidity)s)")
print(query)
cursor.execute(query, data)
conn.commit()
cursor.close()
但是,现在我想修改它以便能够基于 table 及其来自数据的列动态构建查询。
data
arg 是一个 dict
对象。
当前构造的语句是这个 INSERT INTO particle_photon (temp, humidity) VALUES (%(temp)s, %(humidity)s)
但不同的 table 可能有不同的列进入 data
dict 对象。
您可以从准备好的查询中删除列名称及其周围的括号,然后将它们再次包含在您的 table 参数中。所以 table 将等于 particle_photon (temp, humidity)
而不是 particle_photon
.
我想通了,
def insert_row(data, table, conn):
"""Insert new row of data receieved.
"""
cursor = conn.cursor()
placeholder = ", ".join(["%s"] * len(data))
stmt = "insert into `{table}` ({columns}) values ({values});".format(
table=table,
columns=",".join(data.keys()),
values=placeholder
)
cursor.execute(stmt, list(data.values()))
conn.commit()
cursor.close()
我编写了一个使用 mysql 连接器将数据插入到 mysql 中的 table 的函数。
def insert_row(data, table, conn):
"""Insert new row of data receieved.
"""
cursor = conn.cursor()
query = ("INSERT INTO " + table + " "
"(temp, humidity)"
" VALUES (%(temp)s, %(humidity)s)")
print(query)
cursor.execute(query, data)
conn.commit()
cursor.close()
但是,现在我想修改它以便能够基于 table 及其来自数据的列动态构建查询。
data
arg 是一个 dict
对象。
当前构造的语句是这个 INSERT INTO particle_photon (temp, humidity) VALUES (%(temp)s, %(humidity)s)
但不同的 table 可能有不同的列进入 data
dict 对象。
您可以从准备好的查询中删除列名称及其周围的括号,然后将它们再次包含在您的 table 参数中。所以 table 将等于 particle_photon (temp, humidity)
而不是 particle_photon
.
我想通了,
def insert_row(data, table, conn):
"""Insert new row of data receieved.
"""
cursor = conn.cursor()
placeholder = ", ".join(["%s"] * len(data))
stmt = "insert into `{table}` ({columns}) values ({values});".format(
table=table,
columns=",".join(data.keys()),
values=placeholder
)
cursor.execute(stmt, list(data.values()))
conn.commit()
cursor.close()