import re
from .._gae import gae
from ..helpers._internals import Dispatcher
from ..helpers.regex import REGEX_NO_GREEDY_ENTITY_NAME
[docs]class Adapters(Dispatcher):
[docs] def register_for(self, *uris):
def wrap(dispatch_class):
for uri in uris:
self._registry_[uri] = dispatch_class
return dispatch_class
return wrap
[docs] def get_for(self, uri):
try:
return self._registry_[uri]
except KeyError:
raise SyntaxError(
'Adapter not found for %s' % uri
)
adapters = Adapters('adapters')
[docs]def with_connection(f):
def wrap(*args, **kwargs):
if args[0].connection:
return f(*args, **kwargs)
return None
return wrap
[docs]def with_connection_or_raise(f):
def wrap(*args, **kwargs):
if not args[0].connection:
if len(args) > 1:
raise ValueError(args[1])
raise RuntimeError('no connection available')
return f(*args, **kwargs)
return wrap
from .base import SQLAdapter, NoSQLAdapter
from .sqlite import SQLite
from .postgres import Postgre, PostgrePsyco, PostgrePG8000
from .mysql import MySQL
from .mssql import MSSQL
from .mongo import Mongo
from .db2 import DB2
from .firebird import FireBird
from .informix import Informix
from .ingres import Ingres
from .oracle import Oracle
from .sap import SAPDB
from .teradata import Teradata
from .couchdb import CouchDB
if gae is not None:
from .google import GoogleSQL