Skip to content
Advertisement

pyodbc Incorrect syntax near ‘-‘. (102)

I am trying to select all data from table that contains “-” dash symbol, and i get error

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

This is code:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.2.100name;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

It prints out correct SQL statement SELECT * FROM [Table-Name] and in Microsoft SQL Management Studio this query works just fine with copy paste, but it wont work from python console

Same thing is with:qStr = 'SELECT * FROM "' + tableName + '"

Why is this happening, how can i get around it?

Advertisement

Answer

Try using Brackets wherever there is dash.

qStr = "SELECT * FROM [{}]".format(tableName)
10 People found this is helpful
Advertisement