загрузка панда данных в MS Access с помощью pypyodbc & mdash; мне нужен двигатель? [Дубликат]

Если вы специально хотите использовать методы, вы должны использовать 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 без директивы компилятора привязки).

3
задан Jack_of_All_Trades 10 February 2012 в 21:50
поделиться

2 ответа

В теории это было бы через 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 также работает на основе файлов по меньшей мере), затем используйте это.

5
ответ дан zzzeek 27 August 2018 в 10:28
поделиться

Мне в первую очередь нужен доступ на чтение и некоторые простые запросы. Последняя версия 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))
0
ответ дан EB. 27 August 2018 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: