def _execute(sql, dbo, commit): debug(sql) # need to deal with polymorphic dbo argument # what sort of duck is it? # does it quack like a standard DB-API 2.0 connection? if _is_dbapi_connection(dbo): debug('assuming %r is standard DB-API 2.0 connection', dbo) _execute_dbapi_connection(sql, dbo, commit) # does it quack like a standard DB-API 2.0 cursor? elif _is_dbapi_cursor(dbo): debug('assuming %r is standard DB-API 2.0 cursor') _execute_dbapi_cursor(sql, dbo, commit) # does it quack like an SQLAlchemy engine? elif _is_sqlalchemy_engine(dbo): debug('assuming %r is an instance of sqlalchemy.engine.base.Engine', dbo) _execute_sqlalchemy_engine(sql, dbo, commit) # does it quack like an SQLAlchemy session? elif _is_sqlalchemy_session(dbo): debug('assuming %r is an instance of sqlalchemy.orm.session.Session', dbo) _execute_sqlalchemy_session(sql, dbo, commit) # does it quack like an SQLAlchemy connection? elif _is_sqlalchemy_connection(dbo): debug( 'assuming %r is an instance of ' 'sqlalchemy.engine.base.Connection', dbo) _execute_sqlalchemy_connection(sql, dbo, commit) elif callable(dbo): debug( 'assuming %r is a function returning standard DB-API 2.0 cursor ' 'objects', dbo) _execute_dbapi_mkcurs(sql, dbo, commit) # some other sort of duck... else: raise ArgumentError('unsupported database object type: %r' % dbo)
def _todb(table, dbo, tablename, schema=None, commit=True, truncate=False): # need to deal with polymorphic dbo argument # what sort of duck is it? # does it quack like a standard DB-API 2.0 connection? if _is_dbapi_connection(dbo): debug('assuming %r is standard DB-API 2.0 connection', dbo) _todb_dbapi_connection(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) # does it quack like a standard DB-API 2.0 cursor? elif _is_dbapi_cursor(dbo): debug('assuming %r is standard DB-API 2.0 cursor') _todb_dbapi_cursor(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) # does it quack like an SQLAlchemy engine? elif _is_sqlalchemy_engine(dbo): debug('assuming %r instance of sqlalchemy.engine.base.Engine', dbo) _todb_sqlalchemy_engine(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) # does it quack like an SQLAlchemy session? elif _is_sqlalchemy_session(dbo): debug('assuming %r instance of sqlalchemy.orm.session.Session', dbo) _todb_sqlalchemy_session(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) # does it quack like an SQLAlchemy connection? elif _is_sqlalchemy_connection(dbo): debug('assuming %r instance of sqlalchemy.engine.base.Connection', dbo) _todb_sqlalchemy_connection(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) elif callable(dbo): debug('assuming %r is a function returning standard DB-API 2.0 cursor ' 'objects', dbo) _todb_dbapi_mkcurs(table, dbo, tablename, schema=schema, commit=commit, truncate=truncate) # some other sort of duck... else: raise ArgumentError('unsupported database object type: %r' % dbo)
def _execute(sql, dbo, commit): debug(sql) # need to deal with polymorphic dbo argument # what sort of duck is it? # does it quack like a standard DB-API 2.0 connection? if _is_dbapi_connection(dbo): debug('assuming %r is standard DB-API 2.0 connection', dbo) _execute_dbapi_connection(sql, dbo, commit) # does it quack like a standard DB-API 2.0 cursor? elif _is_dbapi_cursor(dbo): debug('assuming %r is standard DB-API 2.0 cursor') _execute_dbapi_cursor(sql, dbo, commit) # does it quack like an SQLAlchemy engine? elif _is_sqlalchemy_engine(dbo): debug('assuming %r is an instance of sqlalchemy.engine.base.Engine', dbo) _execute_sqlalchemy_engine(sql, dbo, commit) # does it quack like an SQLAlchemy session? elif _is_sqlalchemy_session(dbo): debug('assuming %r is an instance of sqlalchemy.orm.session.Session', dbo) _execute_sqlalchemy_session(sql, dbo, commit) # does it quack like an SQLAlchemy connection? elif _is_sqlalchemy_connection(dbo): debug('assuming %r is an instance of ' 'sqlalchemy.engine.base.Connection', dbo) _execute_sqlalchemy_connection(sql, dbo, commit) elif callable(dbo): debug('assuming %r is a function returning standard DB-API 2.0 cursor ' 'objects', dbo) _execute_dbapi_mkcurs(sql, dbo, commit) # some other sort of duck... else: raise ArgumentError('unsupported database object type: %r' % dbo)
def __iter__(self): # does it quack like a standard DB-API 2.0 connection? if _is_dbapi_connection(self.dbo): debug('assuming %r is standard DB-API 2.0 connection', self.dbo) _iter = _iter_dbapi_connection # does it quack like a standard DB-API 2.0 cursor? elif _is_dbapi_cursor(self.dbo): debug('assuming %r is standard DB-API 2.0 cursor') warning('using a DB-API cursor with fromdb() is not recommended ' 'and may lead to unexpected results, a DB-API connection ' 'is better') _iter = _iter_dbapi_cursor # does it quack like an SQLAlchemy engine? elif _is_sqlalchemy_engine(self.dbo): debug('assuming %r instance of sqlalchemy.engine.base.Engine', self.dbo) _iter = _iter_sqlalchemy_engine # does it quack like an SQLAlchemy session? elif _is_sqlalchemy_session(self.dbo): debug('assuming %r instance of sqlalchemy.orm.session.Session', self.dbo) _iter = _iter_sqlalchemy_session # does it quack like an SQLAlchemy connection? elif _is_sqlalchemy_connection(self.dbo): debug('assuming %r instance of sqlalchemy.engine.base.Connection', self.dbo) _iter = _iter_sqlalchemy_connection elif callable(self.dbo): debug('assuming %r is a function returning a cursor', self.dbo) _iter = _iter_dbapi_mkcurs # some other sort of duck... else: raise ArgumentError('unsupported database object type: %r' % self.dbo) return _iter(self.dbo, self.query, *self.args, **self.kwargs)