2014-09-24 99 views
0

如果我在字段中給出靜態值,則插入Myquery,但如果我給出變量名稱,則會拋出異常。 我的工作代碼如何在mysql查詢中使用python傳遞變量名稱

import MySQLdb 
import datetime 

db = MySQLdb.connect("localhost","root","pass","selvapractice") 

cursor = db.cursor() 

sql = "INSERT INTO selva(name) \ 
     VALUES ('Selva') " 
try: 
    cursor.execute(sql) 
    db.commit() 
except: 
    print "dffds" 
    db.rollback() 

db.close() 

我的異常代碼

import MySQLdb 
import datetime 

db = MySQLdb.connect("localhost","root","pass","selvapractice") 

cursor = db.cursor() 
a="surya" 
sql = "INSERT INTO selva(name) \ 
     VALUES (%s) " %(a) 
try: 
    cursor.execute(sql) 
    db.commit() 
except: 
    print "dffds" 
    db.rollback() 

db.close() 

它打印dfffds

如何查詢給變量的名字嗎?任何幫助將不勝感激!

+0

一點都沒有。 – 2014-09-24 04:28:40

+0

我檢查它打印dfffds除了區塊 – Madhesh 2014-09-24 04:33:30

+0

http://halfcooked.com/presentations/osdc2006/python_databases.html – 2014-09-24 04:36:31

回答

2

試試這個: 注意我是如何傳遞變量作爲一個參數去執行功能,這是更好的防止SQL注入攻擊。

import MySQLdb 
import datetime 

db = MySQLdb.connect("localhost","root","pass","selvapractice") 

cursor = db.cursor() 
a="surya" 
b="male" 
sql = "INSERT INTO selva(name, gender) VALUES (%s, %s)" 
try: 
    cursor.execute(sql, [a, b]) 
    db.commit() 
except: 
    print "dffds" 
    db.rollback() 

db.close() 
+0

謝謝,它的工作。你給任何例子給查詢中的一個或多個變量? – Madhesh 2014-09-24 04:51:12

+0

剛更新我的例子與兩個變量,這有幫助嗎? – 2014-09-24 04:52:50

+0

再次感謝medhat – Madhesh 2014-09-24 04:54:07

0

嘗試

INSERT INTO table_name (name) VALUES ('selva') 
+0

你給了名稱的靜態值。這個查詢適用於我。我的問題是如何給變量名稱,而不是靜態值(selva) – Madhesh 2014-09-24 04:32:49

+0

INSERT INTO table_name(name)VALUES(' $ name') – nanbatman 2014-09-24 04:45:28

相關問題