Pour le débogage, j'ai créé une fonction de vérification qui remplace simplement ? par les valeurs de la requête... ce n'est pas de la haute technologie :) mais ça marche ! :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))
Le résultat :
SELECT * FROM dbo.MA_ItemsMonthlyBalances WHERE Item = 1 AND Storage = 2 AND FiscalYear = 'asdasd' AND BalanceYear = 12331 AND Balance = 'aas') AND BalanceMonth = 1
Avec cela, vous pouvez vous connecter ou faire ce que vous voulez :
rowcount = self.cur.execute(query,values).rowcount
logger.info(check_sql_string(query,values))
Si vous en avez besoin, il suffit d'ajouter des exceptions à la fonction.