2015-07-03 4 views
0
from sqlalchemy import create_engine 

from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import Column,Integer,String 
from sqlalchemy.orm import sessionmaker 

engine = create_engine('mysql://we0:[email protected]/javadb', convert_unicode=True, echo=False) 
try: 
    engine.execute("use javadb") 
    engine.connect() 
    print 'connected' 
except: 
    print 'error' 

Base = declarative_base() 

Session = sessionmaker(bind=engine) 

session = Session() 

print engine.table_names() 
print Base.metadata.tables 
#print Base.metadata.reflect(engine) 
class MontEmp(Base): 
    __table__ = Base.metadata.tables['MONTGOMERY_EMPLOYEE'] 

for item in session.query(MontEmp.id): 
     print item 

Im пытается получить имя таблицы из существующей БД и запросов, но я получаю сообщение об ошибке при попытке получить доступ к таблице через - Base.metadata.tables [ «MONTGOMERY_EMPLOYEE»] Я получить ключевую ошибку.Получить имена таблиц в SQLAlchemy

Когда я печатаю Base.metadata.tables свой пустой, но когда я печатаю engine.table_names(), он перечисляет все таблицы.

Вопрос: -

Почему Base.metadata.tables [ 'MONTGOMERY_EMPLOYEE'] пусто?

+0

смотрит на меня, что ваша «база» не связана с этим движком. Попробуйте 'Base = declarative_base (engine)' – van

ответ

1

проверить новый automap feature in SqlAlchemy 1.0

Согласно примеру, в документации, если имя таблицы MONTGOMERY_EMPLOYEE, вы должны быть в состоянии создать класс, используя фрагмент кода:

Base = automap_base() 
Base.prepare(engine, reflect=True) 

MontEmp = Base.classes.MONTGOMERY_EMPLOYEE 

Затем он должен можно запросить класс MontEmp как любой выраженный вручную класс SqlAlchemy.

пуст, потому что это declarative_base и база данных еще не была отражена.

Смежные вопросы