Неверный синтаксис Python 2.7 MSSQL рядом с порядком

Я искал вверх и вниз, чтобы найти решение этой проблемы, я получаю сообщение об ошибке, когда добавляю Order by к оператору:

(156, «Неверный синтаксис рядом с ключевым словом «Заказ». Сообщение об ошибке DB-Lib 20018, серьезность 15:\nОбщая ошибка SQL Server: проверьте сообщения от SQL Server\n")

Код в моем файле .py:

db = pymssql.connect(server='DESKTOP-3G1FB9B\SQLEXPRESS', user='sa', password='', database='Osmium')
cursor = db.cursor()
sql = "(SELECT TOP 1 * FROM delayed Order by ID ASC)"
cursor.execute(sql)

Если я удалю «Упорядочить по идентификатору ASC», он будет работать нормально, но мне нужно упорядочить результаты, и я не могу найти решение. Ввод запроса в SQL Server 2014 Management Studio и добавление «Osmium.dbo.delayed» возвращает правильный результат, мне просто нужно, чтобы он работал в сценарии Python (2.7).

SELECT TOP 1 * FROM Osmium.dbo.delayed Order by ID ASC

person George Crane    schedule 30.04.2016    source источник
comment
Здесь все выглядит нормально. Тем не менее, просто дикая догадка - попробуйте обернуть вещи с помощью []: SELECT TOP 1 * FROM [delayed] Order by [ID] ASC   -  person Andrei    schedule 30.04.2016
comment
Попробуйте, не заключая оператор в круглые скобки: sql = "SELECT ...   -  person Gord Thompson    schedule 30.04.2016
comment
Великолепно, я поместил их в [ ], но, к сожалению, это не решило проблему, но удаление скобок мгновенно решило проблему, спасибо за вашу помощь :)   -  person George Crane    schedule 30.04.2016


Ответы (1)


Отправьте это, чтобы дать ответ, и объясните, почему:

Измените объявление переменной sql следующим образом:

sql = "SELECT TOP 1 * FROM [delayed] ORDER BY [ID] ASC"

ORDER BY — это предложение в T-SQL, и поэтому не требует круглых скобок для установки какого-либо порядка операций. Квадратные скобки можно использовать для заключения определенных объектов в SQL Server, чтобы разрешить использование зарезервированных слов (например, если у вас есть столбец с именем, например [файл]) или определенные символы, такие как дефис (база данных с именем [your-db ]).

person FlipperPA    schedule 01.05.2016