Как использовать отражение SQLAlchemy с Sybase?[ответ: оказывается, это не поддерживается!] - PullRequest
2 голосов
/ 06 марта 2012

Я пытаюсь узнать больше о концепции .egg и методах переопределения в Python.Вот сообщение об ошибке, которое я получаю:

Traceback (most recent call last):
  File "C:/local/work/scripts/plmr/plmr_db.py", line 42, in <module>
    insp.reflecttable(reo_daily_table, column_list)
  File "build\bdist.win32\egg\sqlalchemy\engine\reflection.py", line 370, in reflecttable
  File "build\bdist.win32\egg\sqlalchemy\engine\reflection.py", line 223, in get_columns
  File "build\bdist.win32\egg\sqlalchemy\engine\base.py", line 260, in get_columns
NotImplementedError

Вот конкретная функция из base.py:

def get_columns(self, connection, table_name, schema=None, **kw):
    """Return information about columns in `table_name`.

    Given a :class:`.Connection`, a string
    `table_name`, and an optional string `schema`, return column
    information as a list of dictionaries with these keys:

    name
      the column's name

    type
      [sqlalchemy.types#TypeEngine]

    nullable
      boolean

    default
      the column's default value

    autoincrement
      boolean

    sequence
      a dictionary of the form
          {'name' : str, 'start' :int, 'increment': int}

    Additional column attributes may be present.
    """

    raise NotImplementedError()

Итак, мой вопрос - переопределить ли эту функцию, написав новуюметод в моем основном модуле?Или я пропускаю шаг где-то по пути с моим импортом?Или я просто не в курсе?

Любая и вся помощь приветствуется:)

edit: добавление моего кода

import sys
from sqlalchemy import create_engine, select, Table, MetaData
from sqlalchemy.engine import reflection

dbPath = 'connection_string'
engine = create_engine(dbPath, echo=True)

connection = engine.connect()

#reflect tables into memory
meta = MetaData()
reo_daily_table = Table('reo_daily',meta)
insp = reflection.Inspector.from_engine(engine)
column_list=[...]
insp.reflecttable(reo_daily_table, column_list)

connection.close()

Ответы [ 2 ]

2 голосов
1 голос
/ 07 марта 2012

Вы неправильно поняли. Вам не нужно создавать подклассы, и эта проблема не имеет ничего общего с яйцами и файлами .ini.

Вы не должны создавать экземпляр Инспектора таким образом. Если вы читаете SQLAlchemy docs внимательно, вы заметите, что вы не должны использовать конструктор Reflection напрямую; вместо этого вы должны написать

insp = reflection.Inspector.from_engine(engine)
...