在Python中如何利用變數執行SQL語句
P粉725827686
P粉725827686 2023-08-21 16:40:37
0
2
476
<p>我有以下的Python程式碼:</p> <pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,") </pre> <p>其中<code>var1</code>是整數,<code>var2</code>和<code>var3</code>是字串。 </p> <p>我該如何在不讓Python將它們作為查詢文字的一部分的情況下寫入變數名稱? </p>
P粉725827686
P粉725827686

全部回覆(2)
P粉781235689

不同的Python DB-API實作允許使用不同的佔位符,所以你需要找出你正在使用的是哪種佔位符 -- 例如(使用MySQLdb):

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

或(使用Python標準函式庫中的sqlite3):

cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))

或其他方式(在VALUES之後,你可以使用(:1, :2, :3),或使用"named styles" (:fee, :fie, :fo)(%(fee)s, %(fie)s, %(fo)s),在這種情況下,你需要將一個字典作為第二個參數傳遞給execute函數)。檢查你正在使用的DB API模組中的paramstyle字串常數,並查看http://www.python.org/dev/peps/pep-0249/上的paramstyle ,了解所有的參數傳遞方式!

P粉763662390
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

請注意參數是作為一個元組傳遞的,(a, b, c)。如果您只傳遞一個參數,元組需要以逗號結尾,(a,)

資料庫API會對變數進行適當的轉義和引用。請注意不要使用字串格式化運算子(%),因為

  1. 它不會進行任何轉義或引用。
  2. 它容易受到無法控制的字串格式攻擊,例如SQL注入
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板