Para depurar el purpuse Creé una función de verificación que simplemente reemplaza? con los valores de consulta ... no es de alta tecnología :) ¡pero funciona! : D
def check_sql_string(sql, values):
unique = "%PARAMETER%"
sql = sql.replace("?", unique)
for v in values: sql = sql.replace(unique, repr(v), 1)
return sql
query="""SELECT * FROM dbo.MA_ItemsMonthlyBalances
WHERE Item = ? AND Storage = ? AND FiscalYear = ? AND BalanceYear = ? AND Balance = ? AND BalanceMonth = ?"""
values = (1,2,"asdasd",12331, "aas)",1)
print(check_sql_string(query,values))
El resultado:
SELECT * FROM dbo.MA_ItemsMonthlyBalances cuando el punto = 1 y almacenamiento = 2 Y FiscalYear = 'asdasd' Y BalanceYear = 12331 y el equilibrio = 'aas') y BalanceMonth = 1
con esto se puede registrar o hacer lo que quiera:
rowcount = self.cur.execute(query,values).rowcount
logger.info(check_sql_string(query,values))
Si necesita sólo tiene que añadir alguna excepción de captura a la función.
Es ciertamente posible. Simplemente significa volver a implementar las transformaciones realizadas por el controlador ODBC. Normalmente esto solo será un escape. –