当前位置: 首页 > 面试题库 >

如何使用pyodbc和MS-Access在Python cursor.execute中查看真正的SQL查询

壤驷瑾瑜
2023-03-14
问题内容

我在Python中使用以下代码(对于MS-Access,使用pyodbc)。

cursor.execute("select a from tbl where b=? and c=?", (x, y))

可以,但是出于维护目的,我需要知道发送到数据库的完整且确切的SQL字符串。
有可能吗?


问题答案:

答案是不。我在项目的本地Google代码(以及Google论坛)上发布了我的问题,答案是:

l … @ deller.id.au对问题163的评论#1:cursor.mogrify返回查询字符串
http://code.google.com/p/pyodbc/issues/detail?id=163

供参考,这里是指向报告者引用的“
mogrify”光标方法的pyscopg文档的链接:http
:
//initd.org/psycopg/docs/cursor.html#cursor.mogrify

pyodbc不会对SQL执行任何此类转换:它将参数化的SQL直接传递给ODBC驱动程序。唯一涉及的处理是将参数从Python对象转换为ODBC
API支持的C类型。

在将SQL发送到服务器之前,可以在ODBC驱动程序中对SQL进行某些转换(例如,Microsoft SQL Native
Client执行此操作),但是这些转换对pyodbc隐藏。

因此,我认为在pyodbc中提供mogrify功能是不可行的。



 类似资料:
  • 问题内容: 为SQL Server编写查询时,可以声明和使用如下变量: 在编写用于MS Access的查询时,是否有一种方法可以类似地声明和使用变量? 我需要用另一个查询的结果填充变量,然后使用该值执行插入/更新操作。该查询将从.NET应用程序运行。 问题答案: 在某种方式 但是,您不能使用,在运行查询或在VBA中设置查询时可以手动输入参数。 您可以使用System.Data.OleDb命名空间中

  • 问题内容: 要求:生成一个查询,该查询根据用户输入的StartDate,EndDate和Upper Data Threshold输入基于电话号码的数据。 这些输入变量是查询的界限。因此,SELECT语句相应地写在下面。 唯一需要注意的是,如果某个电话号码的单个记录超过了“上限数据阈值”,那么与该违规电话号码相关联的所有电话号码记录都不应输出,无论该相同电话号码的其他记录是否违反该记录。数据阈值。以

  • 问题内容: 我只想获取一个表“ b”的值,如果表“ a”的值是“-”如果表“ b”的值是空的,那么即使它是“-”,也要获取表“ a”的值 Microsoft Access对以下查询说“ Missing operator”: 我认为该错误是在CASE表达式行上。 问题答案: MS Access不支持语句。用途: 我不确定Access是否支持别名,但是它可能支持 注意(尽管标签正确),问题的标题可能会

  • 问题内容: 有没有一种方法可以显示执行查询时Django正在运行的SQL? 问题答案: 请参阅文档FAQ:“如何查看Django正在运行的原始SQL查询? ” 包含SQL查询的列表: 查询集还具有包含要执行的查询的属性: 请注意,查询的输出不是有效的SQL,因为: “ Django实际上从未插值参数:它将查询和参数分别发送到数据库适配器,后者执行适当的操作。” 来自Django错误报告#17741

  • 问题内容: 我在MS Access的VBA中执行了多个SQL存储过程(例如UPDATE,SELECT INTO语句): CurrentDb.Execute“ qry1” CurrentDb.Execute“ qry2” 我希望这样做: 如果qry2失败,它将撤消qry1。 qry1和qry2是同时执行的(因为我有许多存储过程是在链中执行的),因此该过程运行得更快。 如何才能做到这一点? 问题答案:

  • 问题内容: 我在应该是一个非常简单的脚本方面遇到了麻烦。我只是想使用Python pyodbc模块创建一个新的SQL Server数据库。当我在SQL Server2012中执行该参数时,我尝试传递的“ sqlcommand”参数完美运行,但是此python脚本失败了。不知道出了什么问题,有人有什么想法吗? 和错误: 问题答案: 是SQL Server ManagementStudio中的批处理终