【问题标题】:How do I use SQL parameters with python?如何在 python 中使用 SQL 参数?
【发布时间】:2011-03-25 12:55:28
【问题描述】:

我正在使用 python 2.7 和 pymssql 1.9.908

在 .net 中查询数据库我会这样做:

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

我试图弄清楚 python 的等价物,尤其是 pymssql。我意识到我可以只进行字符串格式化,但这似乎不能像参数那样正确处理转义(我可能错了)。

我如何在 python 中做到这一点?

【问题讨论】:

  • 优秀的问题和答案。有谁知道如何使用 Jason 上面的 NAMED 参数。到目前为止,我只能使用 %s, %d 类型的东西(位置)。

标签: python pymssql


【解决方案1】:

创建连接对象后db

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

然后使用生成的cursor 对象的任何fetch... 方法。

不要被%s 部分所迷惑:这不是字符串格式,而是参数替换(不同的DB API 模块使用不同的语法进行参数替换——pymssql 恰好使用了不幸的%s!-) .

【讨论】:

  • 谢谢。 %s 语法让我失望。
  • @Jason,不客气——可能的混淆正是我将 DB API 参数的语法称为“不幸”的原因(尽管许多流行的 DB API 模块都使用它,唉)。跨度>
  • 该死的这种误导性的 %s 语法!我只花了一个小时试图理解为什么我的代码抱怨尝试使用 %d 来指定 int 参数。我被引导认为这里使用的是 Python 格式。
  • 注意python3上最新的pymssql不喜欢[customer_id],它想要一个元组(customer_id,)
猜你喜欢
  • 2021-06-15
  • 2010-11-05
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
相关资源
最近更新 更多