簡體   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