Contact: fumanchu@aminus.org

Log in as guest/geniusql to create tickets

Changeset 198

Show
Ignore:
Timestamp:
10/25/07 04:59:52
Author:
fumanchu
Message:

New ConnectionManager?.initial_sql attribute, for running e.g. "SET search_path" on each conn.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/geniusql/conns.py

    r197 r198  
    232232                        "REPEATABLE READ", "SERIALIZABLE"] 
    233233     
     234    # Any SQL to execute per connection (inside _get_conn) 
     235    # before returning the connection to the caller. 
     236    initial_sql = None 
     237     
    234238    def __init__(self, db): 
    235239        self.transactions = {} 
  • trunk/geniusql/providers/ado.py

    r197 r198  
    334334            conn.CommandTimeout = self.CommandTimeout 
    335335        conn.Open(connectstr) 
     336        if self.initial_sql: 
     337            conn._oleobj_.InvokeTypes( 
     338                *(Connection_Execute + 
     339                  (self.initial_sql, pythoncom.Missing, -1))) 
    336340        return conn 
    337341     
  • trunk/geniusql/providers/mysql.py

    r197 r198  
    411411        try: 
    412412            conn = _mysql.connect(**args) 
     413            if self.initial_sql: 
     414                conn.query(self.initial_sql) 
    413415        except _mysql.OperationalError, x: 
    414416            if x.args[0] == 1040:   # Too many connections 
  • trunk/geniusql/providers/psycopg.py

    r197 r198  
    3838            # Allow statements like CREATE DATABASE to run outside a transaction. 
    3939            c.set_isolation_level(0) 
     40            if self.initial_sql: 
     41                cursor.execute(self.initial_sql) 
    4042            return c 
    4143        except _psycopg.DatabaseError, x: 
  • trunk/geniusql/providers/pypgsql.py

    r195 r198  
    2626         
    2727        try: 
    28             return libpq.PQconnectdb(connstr) 
     28            conn = libpq.PQconnectdb(connstr) 
     29            if self.initial_sql: 
     30                conn.query(self.initial_sql) 
     31            return conn 
    2932        except libpq.DatabaseError, x: 
    3033            msg = x.args[0] 
  • trunk/geniusql/providers/sqlite.py

    r197 r198  
    607607##            conn.isolation_level = None 
    608608            conn.text_factory = str 
    609             return conn.cursor() 
     609            c = conn.cursor() 
     610            if self.initial_sql: 
     611                c.execute(self.initial_sql) 
     612            return c 
    610613    else: 
    611614        def _get_conn(self): 
    612             return _sqlite.connect(self.db.name, self.db.mode) 
     615            conn = _sqlite.connect(self.db.name, self.db.mode) 
     616            if self.initial_sql: 
     617                conn.execute(self.initial_sql) 
     618            return conn 
    613619     
    614620    def isolate(self, conn, isolation=None):