2 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您遇到錯(cuò)誤,請(qǐng)?zhí)峁╁e(cuò)誤(盡可能完整的堆棧跟蹤)。但是,即使沒(méi)有這些,您也可能會(huì)遇到或?qū)⒂龅藉e(cuò)誤處理插入的問(wèn)題。
sample_data = str(i+1)+",'"+ts+"',"+flowRate+","+velocity+","+netTotalizer+","+posTotalizer+","+negTotalizer
此處的粗體顯示您在何處添加單引號(hào)sample_data。然后您使用insertTodbMeter包含單引號(hào)的值調(diào)用,但這些值并非全部引用,這意味著這將中斷:
sql_insert = "INSERT INTO btureading(sensorId,dt,flowRate,velocity,netTotalizer)VALUES('"+myVal+"')"
正確的方法是使用準(zhǔn)備好的語(yǔ)句/參數(shù)化查詢。不要嘗試構(gòu)建 SQL 字符串;傳遞您的值并讓數(shù)據(jù)庫(kù)庫(kù)處理它。這是基于此示例的起點(diǎn):
def insert_to_db_meter(sensor_id, dt, flow_rate, velocity, net_totalizer):
mydb = conndev()
mycursor= mydb.cursor(prepared=True)
sql_insert = """
INSERT INTO btureading (
sensorId,
dt,
flowRate,
velocity,
netTotalizer
)
VALUES (
%s,
%s,
%s,
%s,
%s
)
"""
mycursor.execute(
sql_insert,
(
sensor_id,
dt,
flow_rate,
velocity,
net_totalizer,
),
)
mydb.commit()
return sql_insert

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
添加回答
舉報(bào)