2010-08-04 67 views
9

我使用python 2.7和pymssql 1.9.908如何在Python中使用SQL参数?

在.NET查询数据库,我会做这样的事情:

using (SqlCommand com = new SqlCommand("select * from Customer where CustomerId = @CustomerId", connection)) 
{ 
    com.Parameters.AddWithValue("@CustomerID", CustomerID); 
    //Do something with the command 
} 

我试图找出相当于是什么蟒蛇,更特别pymssql。我意识到我可以做字符串格式化,但是这似乎并没有象参数那样正确地转义(我可能是错误的)。

如何在python中执行此操作?

+0

优秀的问题和答案。有没有人知道如何使用* NAMED *参数,如杰森以上。到目前为止,我只能使用%s,%d类型的东西(位置)。 – 2013-12-05 18:49:45

回答

19

创建连接对象db后:

cursor = db.execute('SELECT * FROM Customer WHERE CustomerID = %s', [customer_id]) 

然后使用任何所得cursor对象的fetch...方法。

不要被%s部分被愚弄:这不是字符串格式化,它的参数替代(不同的DB API模块使用参数替换不同的语法 - pymssql恰好使用不幸%s - !)。

+2

谢谢。 '%s'语法让我失望。 – 2010-08-05 14:17:46

+0

@Jason,不客气 - 可能的困惑正是我为什么将DB API参数的语法称为“不幸”(尽管许多流行的DB API模块使用它,唉)。 – 2010-08-05 14:29:46

+1

该死的误导%s语法!我只花了一个小时试图理解为什么我的代码抱怨试图使用%d来指定一个int参数。我被带到认为这是在这里使用的Python格式。 – Passiday 2013-10-05 08:58:42

相关问题