2014-04-15 60 views
0

我想一些值插入到我的表。的代碼是:MySQL和Python的插入

sql="Insert into pressure_image(idItem, pressure_val, image_loc, array_time, Time_Stamp) values (30, 260, 'a.jpg', 'aray', 14-11-2000)"的值在表中插入正確,但是當我嘗試命令作爲代碼給定沒有值被插入:

import MySQLdb 

db=MySQLdb.connect(host="localhost",user="user_name", passwd="",db="name_of_db", port=3306) 
cursor=db.cursor() 
readcount=52 
sql="Insert into pressure_image(idItem, pressure_val, image_loc, array_time, Time_Stamp) values ('%d', 260, 'a.jpg', 'aray', 14-11-2000)" 
try: 
    cursor.execute(sql, (readcount)) 
    db.commit() 
except: 
    print "No value inserted" 
    db.rollback() 

問題是,當我嘗試像插入命令。所以基本上,常數工作,但變量沒有。

如何變量插入到表?

回答

1

嘗試加入逗號:

cursor.execute(sql, (readcount,)) 

這裏(readcount) == readcount,但(readcount,)是含有readcount元組

也與您的查詢%s更換%d。 如documentation

所述執行(個體,查詢,ARGS =無)

查詢 - 串,查詢在服務器上執行

ARGS - 可選序列 或映射,用於查詢的參數。

注意:如果args是一個序列,則在查詢中必須使用%s作爲參數 佔位符。如果使用映射,則必須使用%(key)s作爲佔位符 。

因此,MySQLdb的迫使我們使用序列args參數(可以是任何類型的可迭代)和%s。使用%s格式說明符是因爲在格式化查詢之前,來自args的值已轉義並轉換爲字符串。

+0

試過也無濟於事。 –

+0

@PrakharMohanSrivastava查看更新 – vaultah

+0

謝謝謝謝!有用!這個btw背後的邏輯是什麼?爲什麼我需要這個值是一個元組? –