pyodbc' - '附近的语法不正确。 (102)

时间:2017-08-01 10:34:45

标签: python sql pyodbc

我正在尝试从包含" - "的表中选择所有数据破折号,我收到错误

    cursor.execute(qStr)
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '-'. (102) (SQLExecDirectW)")

这是代码:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.2.100\name;DATABASE=base;UID=user;PWD=pass')

try:
    cursor = cnxn.cursor()
except e:
    if e.__class__ == pyodbc.ProgrammingError:        
        conn == reinit()
        cursor = conn.cursor()

def checkIfEmpty (tableName):
    qStr = 'SELECT * FROM [' + tableName + ']'
    print(qStr)
    cursor.execute(qStr)
    asd=cursor.fetchone()
    if asd==None:
        return True
    else:
        return False

它打印出正确的SQL语句SELECT * FROM [Table-Name],并且在Microsoft SQL Management Studio中,此查询可以正常使用复制粘贴,但它不能从python控制台工作

同样的事情是:qStr = 'SELECT * FROM "' + tableName + '"

为什么会这样,我怎么能绕过它?

2 个答案:

答案 0 :(得分:3)

尝试在任何有破折号的地方使用括号。

qStr = "SELECT * FROM [{}]".format(tableName)

答案 1 :(得分:0)

现在你也可以这样写:

qStr = f"SELECT * FROM [{tableName}]"