[DB-API]Recuperer la requete qui va etre executée ?
Salut,
j'ai un petit probleme mon programme utilise psycopg2, et j'ai créer une interface comme ceci, je voudrais pouvoir voir les requetes brutes, j'ai donc fait comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| # -*- coding: iso-8859-1 -*-
import psycopg2 as pg
import os
class DBHandler(object):
def __init__(self,db_name):
self.db_name = db_name
self.database = pg.connect(db_name)
def cursor(self):
print("[DB]CURSOR CREATED")
return self.database.cursor()
def commit(self):
print("[DB]COMMIT")
return self.database.commit()
def rollback(self):
print("[DB]ROLLBACK")
return self.database.rollback()
def query_one(self,sql,arg=()):
print("[DB.QUERY_ONE]%s" %(sql))
cur = self.cursor()
cur.execute(sql,arg)
return cur.fetchone()
def query_all(self,sql,arg=()):
print("[DB.QUERY_ALL]%s" %(sql))
cur = self.cursor()
cur.execute(sql,arg)
return cur.fetchall()
def query(self,sql,arg=()):
print("[DB.QUERY]%s" %(sql))
cur = self.cursor()
cur.execute(sql,arg)
return 0
def query_many(self,sql,arg=(),limit=100):
print("[DB.QUERY_MANY]%s" %(sql))
cur = self.cursor()
cur.execute(sql,arg)
return cur.fetchmany(limit) |
Seulement les arguments ne sont pas affiché, ca fait que je n'ai que des logs de ce genre :
Code:
INSERT INTO messages(content,post_date,user_id,channel_id) VALUES(%s,NOW(),%s,%s);
les méthodes sont appelé comme cela :
Code:
1 2 3
| self.db_handler.query("""
INSERT INTO messages(content,post_date,user_id,channel_id) VALUES(%s,NOW(),%s,%s);
""",(unicode(message,"utf-8","ignore"),user_id,chan_id,)) |
comment faire pour récupérer la requête finale ? je voudrais voir la "vrais requete", dans les caractères de substitution.
Voila j'espere que vous pourrez m'aider,
Merci :)