Tengo una consulta SQL simple que se ejecuta directamente en SQL Server Studio

select latitude from locations.dbo.users WHERE firstname='Mike'

Esta misma consulta se puede perforar bien usando el módulo pandas en python

pandas.read_sql_query('select latitude from locations.dbo.users WHERE firstname=\'Mike\'',conn)

Pero cuando intento consultar la columna de nombre con una variable, obtengo un error como ese.

firstname="Mike"
pandas.read_sql_query('select latitude from locations.dbo.users WHERE firstname='+firstname, conn)

'Error de ejecución en sql' seleccione latitud desde ubicaciones.dbo.users WHERE firstname = Mike ': (' 42S22 ', "[42S22] [Microsoft] [ODBC SQL Server Driver] [SQL Server] Nombre de columna no válido' Mike '. ( 207) (SQLExecDirectW) ") '

Sé que el error se debe simplemente a la ubicación de mis comillas y al diseño de la cadena, pero parece que no puedo obtener el diseño correcto para que la consulta tenga éxito exactamente como lo haría si lo hiciera sin la variable. He probado todo tipo y ubicación de comillas simples y dobles, etc.

0
Ian Laird 1 sep. 2020 a las 03:22

1 respuesta

La mejor respuesta

Le faltan las comillas simples en su cadena concatenada. Lo siguiente debería funcionar:

pandas.read_sql_query("select latitude from locations.dbo.users WHERE firstname='"+firstname+"'", conn)

Alternativamente:

pandas.read_sql_query('select latitude from locations.dbo.users WHERE firstname=\''+firstname+'\'', conn)
1
Alessandro Parolin 1 sep. 2020 a las 00:26