Проблемы с сервером SQL и PYODBC - PullRequest
0 голосов
/ 18 июня 2020

Я получаю сообщение об ошибке в этом заявлении:

cursor.execute("SELECT * FROM dbo.User")

Ошибка:

pyodb c .ProgrammingError: ('42000', "[42000] [ Microsoft] [ODB C Driver 11 для SQL Server] [SQL Server] Неправильный синтаксис рядом с ключевым словом «Пользователь». (156) (SQLExecDirectW) ")

Код ниже. Я предполагаю, что соединение в порядке, потому что ничего не произойдет, если я не выполню запрос? Я что-то не так делаю?

SERVER = 'LAPTOP-1E7UL24T\SQLEXPRESS02'
DATABASE = 'PT'
DRIVER='{ODBC Driver 17 for SQL Server}'
DATABASE_CONNECTION=f'Driver={DRIVER};SERVER={SERVER};Database={DATABASE};Trusted_Connection=yes;'
print(DATABASE_CONNECTION)
cnxn=pyodbc.connect(DATABASE_CONNECTION)

cursor=cnxn.cursor()
cursor.execute("SELECT * FROM dbo.User")

1 Ответ

1 голос
/ 18 июня 2020

User - это зарезервированное слово , и его необходимо экранировать, обычно используя квадратные скобки, например,

SELECT * FROM dbo.[User]

Но двойные кавычки также работают:

SELECT * FROM dbo."User"

Хотя это сделает вашу жизнь (и всех последующих разработчиков) намного проще, если вы просто будете избегать зарезервированных слов.

...