Cómo pasar valores de variables dinámicamente en la consulta de pandas sql

Cómo pasar parámetros variables dinámicamente

order = 10100 status = 'Shipped' df1 = pd.read_sql_query("SELECT * from orders where orderNumber =""" + str(10100) + """ and status = """ + 'status' +""" order by orderNumber """,cnx) 

TypeError: debe ser str, no int

obtener error por encima aunque he convertido a cadenas alguna idea?

¿Hay alguna alternativa para pasar los parámetros?

Utilice sql parametrizado proporcionando los argumentos a través del argumento de palabra clave params . El adaptador de la base de datos hará la cita correcta de los argumentos y el código será menos vulnerable a los ataques de inyección de SQL . (Consulte Little Bobby Tables para ver un ejemplo del tipo de problema que se cita incorrectamente, el SQL no parametrizado puede ayudarlo).

 order = 10100 status = 'Shipped' sql = """SELECT * from orders where orderNumber = ? and status = ? order by orderNumber""" df1 = pd.read_sql_query(sql, cnx, params=[order, status]) 

El ? s en sql son marcadores de parámetros . Se reemplazan con los valores citados correctamente de los params . Tenga en cuenta que el marcador de parámetro adecuado depende del adaptador de base de datos que esté utilizando. Por ejemplo, MySQLdb y psycopg2 usan %s , mientras que sqlite3 , y oursql usa ? .