source/projects/anosql/src/python/anosql/adapters/psycopg2.py
Reid 'arrdem' McKenzie 37a00166c3 And lint
2021-08-29 22:18:57 -06:00

61 lines
1.7 KiB
Python

from contextlib import contextmanager
from ..patterns import var_pattern
def replacer(match):
gd = match.groupdict()
if gd["dblquote"] is not None:
return gd["dblquote"]
elif gd["quote"] is not None:
return gd["quote"]
else:
return "{lead}%({var_name})s{trail}".format(
lead=gd["lead"],
var_name=gd["var_name"],
trail=gd["trail"],
)
class PsycoPG2Adapter(object):
@staticmethod
def process_sql(_query_name, _op_type, sql):
return var_pattern.sub(replacer, sql)
@staticmethod
def select(conn, _query_name, sql, parameters):
with conn.cursor() as cur:
cur.execute(sql, parameters)
return cur.fetchall()
@staticmethod
@contextmanager
def select_cursor(conn, _query_name, sql, parameters):
with conn.cursor() as cur:
cur.execute(sql, parameters)
yield cur
@staticmethod
def insert_update_delete(conn, _query_name, sql, parameters):
with conn.cursor() as cur:
cur.execute(sql, parameters)
@staticmethod
def insert_update_delete_many(conn, _query_name, sql, parameters):
with conn.cursor() as cur:
cur.executemany(sql, parameters)
@staticmethod
def insert_returning(conn, _query_name, sql, parameters):
with conn.cursor() as cur:
cur.execute(sql, parameters)
res = cur.fetchone()
if res:
return res[0] if len(res) == 1 else res
else:
return None
@staticmethod
def execute_script(conn, sql):
with conn.cursor() as cur:
cur.execute(sql)