2012-11-14 46 views
0

我是python和SQL的新手,但享受學習曲線。插入記錄和映射字符串到字段?

我正在使用的pymssql,並有我想象將是一個非常基本的問題。

在函數中,我需要插入一個表中的記錄,並傳遞到INSERT語句一些變量我前面計算。

目前我的代碼看起來是這樣的:

var 1 = "Hello"
var 2 = "Bye"
var 3 = "12/12/12
cursor.execute("INSERT INTO table (field1, field2, field3) VALUES(%s, %s, %s)", var1, var2, var3)

這會返回一個錯誤:

execute() takes at most 2 positional arguments (4 given)

什麼我做錯了,並銘記我學習,這將是一個更優雅這樣做的方式?

回答

2

您分別傳遞每個參數​​,它僅需要兩個。

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

現在,你傳遞給它兩個參數。第一個是字符串,第二個是你的變量的tuple(注意額外的())。

+0

謝謝。如果任何人有時間,會喜歡看我的例子中使用較新的高級字符串格式的答案。 – Simon

+0

高級字符串格式不適用於此,因爲您需要(單獨)傳遞查詢字符串和變量。這是因爲execute方法可以正確地清理SQL變量的值。 –

+0

謝謝Burhan。所以如果(我不是)被限制使用python的未來版本,我相信字符串格式化將被棄用,我該怎麼辦? – Simon