Если вы специально хотите использовать методы, вы должны использовать inspect.ismethod .
Для имен методов:
import inspect
method_names = [attr for attr in dir(self) if inspect.ismethod(getattr(self, attr))]
Для самих методов:
import inspect
methods = [member for member in [getattr(self, attr) for attr in dir(self)] if inspect.ismethod(member)]
Иногда может быть полезно inspect.isroutine
(для встроенных расширений C, Cython без директивы компилятора привязки).
В теории это было бы через create_engine («access: /// some_odbc_dsn»), но бэкенд Access не работал вообще с SQLAlchemy 0.5, и неясно, насколько хорошо он работал тогда либо ( поэтому он упоминается как «разработка» в http://docs.sqlalchemy.org/en/latest/core/engines.html#supported-databases - «разработка» означает «версия разработки диалекта существует, но еще не используется »). Просто не хватает интереса / добровольцев, чтобы этот диалект работал прямо сейчас. (когда / если это так, вы увидите его в http://docs.sqlalchemy.org/en/latest/dialects/access.html ).
Ваш лучший ставка для доступа прямо сейчас будет заключаться в том, чтобы экспортировать данные в файл базы данных SQLite (или, конечно же, какую-то другую базу данных, хотя SQLite также работает на основе файлов по меньшей мере), затем используйте это.
Мне в первую очередь нужен доступ на чтение и некоторые простые запросы. Последняя версия sqlalchemy имеет (сломанные) обратные модули доступа, но она не зарегистрирована как точка входа.
Для этого потребовалось несколько исправлений, но это сработало для меня:
def fixup_access():
import sqlalchemy.dialects.access.base
class FixedAccessDialect(sqlalchemy.dialects.access.base.AccessDialect):
def _check_unicode_returns(self, connection):
return True
def do_execute(self, cursor, statement, params, context=None, **kwargs):
if params == {}:
params = ()
super(sqlalchemy.dialects.access.base.AccessDialect, self).do_execute(cursor, statement, params, **kwargs)
class SomeObject(object):
pass
fixed_dialect_mod = SomeObject
fixed_dialect_mod.dialect = FixedAccessDialect
sqlalchemy.dialects.access.fix = fixed_dialect_mod
fixup_access()
ENGINE = sqlalchemy.create_engine('access+fix://admin@/%s'%(db_location))