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

Posted

技术标签:

【中文标题】在 pymssql 中正确传递带有“-”的数据库名称【英文标题】:Correctly pass a db name having '-' in pymssql 【发布时间】:2021-03-12 06:40:22 【问题描述】:

我有一个由“-”组成的数据库名称(如 dbName-2020)。当我尝试执行查询时,出现以下错误:

pymssql.ProgrammingError: (102, b"Incorrect syntax near '-'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")

这是我使用的代码:

serverName = 'servername.com'
userName = 'user2'
passWord = 'pass2'
dbName = 'dbName-2020'
conn = pymssql.connect(serverName , userName , passWord, "tempdb")
cursor1 = conn.cursor()
db_query = "SELECT CONVERT(date,LastImportDate),* from "+dbName+"..tblStores WHERE run= %s"
query_result1 = cursor1.execute(db_query,('true'))
query_output = cursor1.fetchone()

相同的代码适用于所有其他数据库。如何传递带有“-”的数据库名称?

【问题讨论】:

【参考方案1】:

使用方括号

dbName = '[dbName-2020]'

What does the SQL Standard say about usage of backtick(`)?

【讨论】:

以上是关于在 pymssql 中正确传递带有“-”的数据库名称的主要内容,如果未能解决你的问题,请参考以下文章

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

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

由于 pymssql 的未知原因,连接到数据库失败

如何为 pymssql 编写 pytest?

使用 pymssql 查询格式化

将空值传递给 Python 中的存储过程