2016-04-30 35 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 ])。