2016-04-30 16 views
2

ich gesucht hoch und niedrig für die Lösung dieses Problem zu suchen, erhalte ich die Fehlermeldung, wenn ich das Sortieren nach der Erklärung hinzufügen:Python 2.7 MSSQL falsche Syntax in der Nähe Sortieren

(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")

Der Code in meine Py-Datei ist:

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) 

Wenn ich das ‚Sortieren nach ID ASC‘ entfernen führt sich in Ordnung, aber ich brauche, um die Ergebnisse zu bestellen und bin nicht in der Lage, eine Lösung zu finden. Eingabe der Abfrage in SQL Server 2014 Management Studio und das Hinzufügen von „Osmium.dbo.delayed“ es gibt das richtige Ergebnis, ich brauche es nur innerhalb des Python (2.7) Skript diese

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

Hier sieht alles gut aus. Aber nur eine wilde Vermutung - versuchen Sie, Dinge mit '[]' zu umhüllen: 'SELECT TOP 1 * FROM [verzögert] Sortierung nach [ID] ASC' – Andrei

+2

Versuchen Sie es, ohne die Anweisung in Klammern zu setzen:' sql = "SELECT .. . ' –

+0

Brilliant, ich habe die eingewickelt sie in die [], aber das hat leider nicht gelöst, aber das Entfernen der Klammern löste sofort das Problem, danke für all Ihre Hilfe :) –

Antwort

1

einreichen zu arbeiten, um eine Antwort zu machen warum, und erklärt:

Ihre sql Variablendeklaration ändern zu sein:

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

ORDER BY ist eine Klausel in T-SQL, und daher keine Klammern benötigt, jede Bestellung zu etablieren os f Operationen. Die eckigen Klammern können verwendet werden, um bestimmte Objekte in SQL Server zu umgeben, um reservierte Wörter (z. B. wenn Sie eine Spalte wie [Datei] haben) oder bestimmte Zeichen wie einen Bindestrich (eine Datenbank mit dem Namen [your-db ]).