在MySQL查詢語句中,有時候需要使用占位符來替代即將被使用的變量,這對于執行重復的查詢特別有用。
SELECT * FROM users WHERE username = ?
在上面的查詢語句中,符號“?”表示將被填充的占位符,在執行語句之前,需要先將它替換成實際的值。
占位符是MySQL預處理語句的核心概念,它可以大大提高執行查詢語句的效率和安全性。下面是一個更加詳細的示例:
MySQLdb.cursors的使用
import MySQLdb
db = MySQLdb.connect(host="localhost", user="root", passwd="passwd", db="test")
cursor = db.cursor()
sql = "SELECT * FROM users WHERE username = %s AND password = %s"
cursor.execute(sql, ("user1", "passwd1"))
data = cursor.fetchone()
print "data:", data
db.close()
在上面的代碼中,使用%s作為占位符來標識將要被替換的變量,后面的參數中,使用了一個元組("user1", "passwd1")來代替占位符所表示的變量,這個元組傳遞給execute()方法,MySQLdb會在執行時,自動生成一個安全的查詢語句,這樣可以確保不會被SQL注入攻擊。
其中%s可以替換成其他的符號,比如?或者:username,不同的符號代表不同的占位符,具體可以參考MySQL文檔。
在使用占位符的時候,需要注意只有字符類型的占位符需要使用引號,數字類型不需要,舉例如下:
MySQLdb.cursors的使用
sql = "SELECT * FROM users WHERE age = %s AND salary = %s"
cursor.execute(sql, (18, 5000))
data = cursor.fetchone()
print "data:", data
在上面的代碼中,age和salary分別為數字類型,所以在元組中不需要使用引號。
上一篇css3 2021