Reputation: 221
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.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
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?
Upvotes: 7
Views: 41558
Reputation: 454
Now you can also write it like this:
qStr = f"SELECT * FROM [{tableName}]"
Upvotes: 0
Reputation: 11560
Try using Brackets wherever there is dash.
qStr = "SELECT * FROM [{}]".format(tableName)
Upvotes: 12