def get_dialect(self) -> Dialect: dialect = pypostgresql.dialect(paramstyle="pyformat") dialect.implicit_returning = True dialect.supports_native_enum = True dialect.supports_smallserial = True # 9.2+ dialect._backslash_escapes = False dialect.supports_sane_multi_rowcount = True # psycopg 2.0.9+ dialect._has_native_hstore = True return dialect
def get_dialect(**kwargs): dialect = pypostgresql.dialect(paramstyle='pyformat', **kwargs) dialect.implicit_returning = True dialect.supports_native_enum = True dialect.supports_smallserial = True # 9.2+ dialect._backslash_escapes = False dialect.supports_sane_multi_rowcount = True # psycopg 2.0.9+ dialect._has_native_hstore = True return dialect
import re from asyncpg import connection from sqlalchemy.dialects.postgresql import pypostgresql from sqlalchemy.sql import ClauseElement from sqlalchemy.sql.dml import Insert as InsertObject, Update as UpdateObject from .log import query_logger _dialect = pypostgresql.dialect() _dialect.implicit_returning = True _dialect.supports_native_enum = True _dialect.supports_smallserial = True # 9.2+ _dialect._backslash_escapes = False _dialect.supports_sane_multi_rowcount = True # psycopg 2.0.9+ _dialect._has_native_hstore = True _dialect.paramstyle = 'named' _pattern = r'(?<!:):(\w+)' _compiled_pattern = re.compile(_pattern, re.M) class MissingParameterError(KeyError): """ This error gets thrown when a parameter is missing in a query """ def _replace_keys(querystring, params, inline=False): new_params = [] for index, param in enumerate(params): name, value = param if inline: querystring = querystring.replace(':' + name, value, 1)
from asyncpg import connection from sqlalchemy.dialects.postgresql import pypostgresql from sqlalchemy.sql import ClauseElement from sqlalchemy.sql.dml import Insert as InsertObject, Update as UpdateObject from .log import query_logger _dialect = pypostgresql.dialect(paramstyle='pyformat') _dialect.implicit_returning = True _dialect.supports_native_enum = True _dialect.supports_smallserial = True # 9.2+ _dialect._backslash_escapes = False _dialect.supports_sane_multi_rowcount = True # psycopg 2.0.9+ _dialect._has_native_hstore = True def execute_defaults(query): if isinstance(query, InsertObject): attr_name = 'default' elif isinstance(query, UpdateObject): attr_name = 'onupdate' else: return query # query.parameters could be a list in a multi row insert if isinstance(query.parameters, list): for param in query.parameters: _execute_default_attr(query, param, attr_name) else: query.parameters = query.parameters or {} _execute_default_attr(query, query.parameters, attr_name)