使用pymssql时如何传递连接参数“ApplicationIntent=ReadOnly”

Posted

技术标签:

【中文标题】使用pymssql时如何传递连接参数“ApplicationIntent=ReadOnly”【英文标题】:How to pass connection parameter "ApplicationIntent=ReadOnly" when using pymssql 【发布时间】:2016-06-29 16:31:36 【问题描述】:

我只有对 SQL Server 数据库的只读访问权限。使用pymssql连接数据库时如何传递连接参数“ApplicationIntent=ReadOnly”?如果pymssql不支持,有没有其他python库可以用?

【问题讨论】:

【参考方案1】:

使用 pymssql 配置只读连接意图的唯一方法似乎是配置它所基于的 freetds,但它对我来说并不奏效。我不得不使用 pyodbc 而不是 pymssql

from pyodbc import connect
conn = connect(
    'DRIVER=ODBC Driver 17 for SQL Server;SERVER=' + host + ';PORT=' + port + ';DATABASE='
    + database + ';UID=' + user + ';PWD=' + password + ';ApplicationIntent=ReadOnly')

【讨论】:

感谢您的解决方案,一切正常!唯一的要求是系统上安装了 MSSQL 的 ODBC 驱动程序。例如,在我的 Windows 10 机器上,我安装了 this one。【参考方案2】:

pyodbc 有一个只读参数。例如:

import pyodbc
conn = pyodbc.connect(driver='SQL Server', host=Server, database=Database,
                  trusted_connection='yes', user='', password='', readonly = True)

【讨论】:

这被标记为无用的任何原因?对我来说没问题吗? 可能是因为问题是询问 pymssql,而不是 pyodbc。【参考方案3】:

因为 pymssql 依赖于 FreeTDS 您确实需要解决 FreeTDS 使用的 MS-SQL 服务器的连接参数

因为 ApplicationIntent 列在 freetds user guide 作为一个选项,你应该能够使用它。

【讨论】:

链接失效了。这是new one。

以上是关于使用pymssql时如何传递连接参数“ApplicationIntent=ReadOnly”的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给`pymssql`中的`cursor.execute`?

如何在未确定数量的参数上使用 LIKE 和 % 和 pymssql?

在 pymssql 中正确传递带有“-”的数据库名称

无法使用带有 Windows 身份验证的 pymssql 进行连接

React JS如何使用react-router-dom将数组作为参数传递

pymssql 问题 - INSERT 不适用于参数