2017-03-08 3 views
0

ich die folgende Abfrage schreibe:Python wählen Sie aus SQL-Fehler bekommen

x1 = 5 
y1 = 6 
z1 = 0 
SQL = ("SELECT Z FROM Points WHERE X =x1 AND Y = y1") 
    for row in cursor.execute(SQL): 
     z1 = row.Zcor 

ich die folgende Störung erhalte:

Traceback (most recent call last): File "../ppp.py", line 38, in for row in cursor.execute(SQLp1z): pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][\xc4\xf0\xe0\xe9\xe2\xe5\xf0 ODBC Microsoft Access] \xcd\xe5\xee\xef\xf0\xe5\xe4\xe5\xeb\xe5\xed\xed\xe0\xff \xf4\xf3\xed\xea\xf6\xe8\xff 'convert' \xe2 \xe2\xfb\xf0\xe0\xe6\xe5\xed\xe8\xe8. (-3102) (SQLExecDirectW)")

Was der Fehler in meinem Code und was muss ich tun um dies zu verhindern?

+0

ist Abstand Ihr für die for-Schleife aus oder ist das nur, wie Sie es hier kopiert? –

+0

Werfen Sie einen Blick darauf, es sieht so aus, als würden Sie keine Variablen in die Abfragezeichenfolge aufnehmen. http://stackoverflow.com/questions/902408/how-to-use-variables-in-sql-statement-in-python – Will

Antwort

0

Ihr Problem besteht darin, dass Sie Variablen in Ihrer Zeichenfolge nicht korrekt einschließen. Verwenden Sie String-Formatierung:

SQL = ("SELECT Z FROM Points WHERE X ={x1} AND Y ={y1}".format(x1=x1, y1=y1) 

Oder in Python 3.6:

SQL = (f"SELECT Z FROM Points WHERE X ={x1} AND Y ={y1}")