解決python 執(zhí)行sql語句時(shí)所傳參數(shù)含有單引號(hào)的問題
在編寫自己的程序時(shí),需要實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù),并且是帶參數(shù)的傳遞。
執(zhí)行語句如下:
sql_str = "INSERT INTO teacher(t_name, t_info, t_phone, t_email) VALUES\ (\'%s\', \'%s\', \'%s\', \'%s\')" % (result, result2, phoneNumber, Email) cur.execute(sql_str)
執(zhí)行程序后,產(chǎn)生錯(cuò)誤:
ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '07、PRICAI'08、ACML'09 程序委員會(huì)主席/共同主席,多次擔(dān)任 ACM K' at line 1")
發(fā)現(xiàn)是因?yàn)閞esult2參數(shù)為一個(gè)字符串,而字符串中出現(xiàn)了單引號(hào) ',mysql語句受到影響報(bào)錯(cuò)。
原本認(rèn)為這個(gè)問題應(yīng)該會(huì)是有標(biāo)準(zhǔn)解決方案,可是網(wǎng)上查詢了一下,遇到這個(gè)問題的人不少,但沒有很好的方法解決。
于是考慮了一下,可以讓sql語句在讀取到單引號(hào)時(shí),知道這是字符串文本的單引號(hào),所以可以將參數(shù)中單引號(hào)替換為 \' ,這樣或許可以順利語句如下:
result2 = result2.replace("'","\\'") #將result2中的 ' 替換為 \'
PS: 這里請(qǐng)務(wù)必看清雙引號(hào)以及反斜杠的使用:)
經(jīng)過測(cè)試,問題得到了順利解決。
補(bǔ)充知識(shí):python動(dòng)態(tài)生成變量及sql語句與DF表轉(zhuǎn)化
先說效果:
如圖,本來是這樣的一個(gè)DF表,表示各字段限制條件(A、B、C、D均為字段名)
通過下面步驟轉(zhuǎn)化為一條sql語句,當(dāng)然也做了反向操作
for i in range(3):
locals()['f'+str(i)]=[]
import pandas as pd import numpy as np a = pd.DataFrame({"A":[">=",5], "B":["<",6], "C":["in",'("ha","he")'], "D":["like","*q*"] }) print(a) b = [] for i in a.columns: b.append(str(i)+" "+str(a[i][0])+" "+str(a[i][1]).strip()) c = " and ".join(b) #b = b+str(i)+" "+str(a[i][0])+" "+str(a[i][1])+" "+"and"+" " #print(c) d = c.split(" and ") for i in range(3): locals()['f'+str(i)]=[] for j in (range(len(d))): f = d[j].split(" ") locals()['f' + str(i)].append(f[i]) print(f0,f1,f2) g = pd.DataFrame(columns=f0,data=[f1,f2]) print(g)
以上這篇解決python 執(zhí)行sql語句時(shí)所傳參數(shù)含有單引號(hào)的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)切割mp3片段并降低碼率
MoviePy是一個(gè)基于Python的視頻編輯庫(kù),它提供了創(chuàng)建、編輯、合并、剪輯和轉(zhuǎn)換視頻的功能,所以本文主要介紹如何使用moviepy來分割音頻流并降低碼率,感興趣的可以了解下2023-08-08python深copy和淺copy區(qū)別對(duì)比解析
這篇文章主要介紹了python深copy和淺copy區(qū)別對(duì)比解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python腳本實(shí)現(xiàn)網(wǎng)卡流量監(jiān)控
這篇文章主要介紹了Python腳本實(shí)現(xiàn)網(wǎng)卡流量監(jiān)控,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-02-02Python實(shí)現(xiàn)Linux監(jiān)控的方法
本文通過實(shí)例代碼給大家介紹了Python實(shí)現(xiàn)Linux監(jiān)控的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Python對(duì)接 xray 和微信實(shí)現(xiàn)自動(dòng)告警
xray 是從長(zhǎng)亭洞鑒核心引擎中提取出的社區(qū)版漏洞掃描神器,支持主動(dòng)、被動(dòng)多種掃描方式,自備盲打平臺(tái)、可以靈活定義 POC,功能豐富,這篇文章主要介紹了對(duì)接 xray 和微信實(shí)現(xiàn)自動(dòng)告警,需要的朋友可以參考下2019-09-09python3利用venv配置虛擬環(huán)境及過程中的小問題小結(jié)
這篇文章主要介紹了python3利用venv配置虛擬環(huán)境及過程中的小問題小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08