2016-04-30 59 views
2

我已搜查高和低去尋找解決這個問題,我收到了錯誤,當我通過添加順序聲明:的Python 2.7 MSSQL附近有語法錯誤訂單

(156, "Incorrect syntax near the keyword 'Order'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the 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) 

如果我「的ID ASC訂單」它執行罰款刪除,但我需要訂購的結果,但無法找到一個解決方案。進入查詢到SQL Server 2014 Management Studio中,並加入「Osmium.dbo.delayed」它返回正確的結果,我只是需要它來了Python(2.7)腳本中

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

在這裏一切看起來不錯。然而,只是一個瘋狂的猜測 - 嘗試用'[]'包裝東西':'SELECT TOP 1 * FROM [delayed] order by [ID] ASC' – Andrei

+2

嘗試它沒有語句包裹在圓括號中:'sql =「SELECT .. 。' –

+0

輝煌,我已經把它們包裹在[]中,但可悲的是沒有解決它,但刪除括號立即解決了問題,謝謝你的所有幫助:) –

回答

1

提交本作答覆工作,並解釋爲什麼:

更改sql變量聲明爲:

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

ORDER BY是在T-SQL中的條款,因此並不需要括號建立任何階爲O f操作。方括號可以用來包圍SQL Server中的某些對象,以允許使用保留字(例如,如果您有一個名稱類似[file]的列)或某些字符(如連字符)(名爲[your-db ])。