繁体   English   中英

在python中创建动态插入查询以将数据保存在mysql db中

[英]create a dynamic insert query in python to save data in mysql db

我在 mysql 中有一个表,我正在从 python 客户端向其中插入数据。

我正在使用插入查询将数据插入表中

代码

sql_insert_query = """ INSERT INTO Data
                          (`deviceID`,`date`,`timestamp`,`counter`,`rssi`,
                            `CO2 Sensor Value`,
                            `Supply DPT`,
                            `block`,
                            `floor`) 
                             VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)"""
connection = mysql.connector.connect(host='localhost',database='minniedb',user='',
                                    password='',auth_plugin='mysql_native_password')
cursor = connection.cursor()

"""
 create 'insert_tuple' based on some api calls
"""
cursor.execute(sql_insert_query,insert_tuple)
connection.commit()
cursor.close()
connection.close()
print('inserted in db')

当一切都是静态的时,这很好用。 我有一个案例,当我的表中的列数约为 60-70 并且我从 api 获得的参数是列的子集(大约 10-15)时,这些参数每次都可以更改。 api 返回列名和值。 从 api 返回的样本可以是形式

{
    'deviceID':20,
    'counter' :61,
    'block'   :'A'

}

或者它可以是

{
   'deviceID'        :25,
   'CO2 Sensor Value':600,
   'floor'           : 5

}

在这种情况下,我如何编写查询以将我从 api 收到的任何数据插入到相应的列中,并将其他数据设为 null。

你可以这样尝试:

sensor_data = {
    'deviceID':20,
    'counter' :61,
    'block'   :'A'

} 
sql_insert_query = """ INSERT INTO Data {} VALUES {}""".format(tuple(sensor_data.keys()), tuple(sensor_data.values()))

PS:对于传感器数据,我建议使用谷歌 Firebase :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM