python - 多行sql換行及其中的坑


一般在自動化測試中,查詢sql會有多行,一般會進行換行處理(python的邏輯單行、物理多行),舉例如下:

 

一般的python語句(行尾加上換行符):

單行:

a = 5

多行:

a = \
5

 

sql語句(除每行行尾的換行符外,每一行前后都有雙引號):

單行:

sql2 = "select version()"

多行:

sql2 = \
    "select " \
    "versi" \
    "on()"

 

 

 

好了,現在我們來看看其中的坑在哪里

假如,你的sql語句中存在注釋,如下:

select -- 查詢版本號
version()

上面這一句,在sql中可以正常運行,但是,在python中,就會報錯,如下:

sql2 = \
 " select -- 查詢版本號 " \
 " version() "

cur.execute(sql2)

報錯信息:MySQLdb._exceptions.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 '' at line 1")

將sql2打印出來:

select -- 查詢版本號  version() 

發現整個sql其實是被當作一個字符串處理的,包括其中的注釋,所以會報錯,修改如下:

sql2 = \
 " select -- 查詢版本號 \n" \
 " version() "

加上了一個換行符\n,再次運行,就ok了(注釋被當做了真正的注釋)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM