Форум сайта python.su
Вот я и добралась до работы :-)
Маппинг таблиц выглядит у меня вот так:
from sqlalchemy import *
from sqlalchemy.orm import *
#engine = create_engine("postgres://stat_admin:blabla@172.0.0.0:5433/gf_cfv?pool=2&pool_recycle=300")
engine = create_engine("postgres://stat_admin:blabla@172.0.0.0:5433/gf_cfv")
meta = MetaData("postgres://stat_admin:blabla@172.0.0.0:5433/gf_cfv")
meta.reflect(bind = engine, schema = "public")
item = Table('team_ne', meta, autoload = True, autoload_with = engine)
listen = Table('listen', meta, autoload = True, autoload_with = engine)
class Item(object): pass
class Listen(object): pass
mapper(Item, item)
mapper(Listen, listen)
Офлайн
честно говоря autoload для таблиц не пробовал, но так должно работать
from turbogears.database import metadata, _engine
item = Table('team_ne', metadata, autoload = True, autoload_with = _engine)
listen = Table('listen', metadata, autoload = True, autoload_with = _engine)
class Item(object): pass
class Listen(object): pass
mapper(Item, item)
mapper(Listen, listen)
Офлайн
А адрес, куда к базе подключаться, куда писать? *чеша в затылке*
Офлайн
hildiа адрес у вас лежит в правильном месте, в файле конфигурации, в режиме отладки это файл dev.cfg
А адрес, куда к базе подключаться, куда писать? *чеша в затылке*
Офлайн
Не работает, ругается на отсутствие энжин:
H:\team-ne>python start-team_ne.py
Traceback (most recent call last):
File “start-team_ne.py”, line 15, in <module>
start()
File “H:\team-ne\team_ne\commands.py”, line 51, in start
from team_ne.controllers import Root
File “H:\team-ne\team_ne\controllers.py”, line 9, in <module>
from model import Item, Listen
File “H:\team-ne\team_ne\model.py”, line 16, in <module>
item = Table('team_ne', metadata, autoload = True, autoload_with = _engine)
File “c:\Python25\lib\site-packages\sqlalchemy-0.5.0rc1-py2.5.egg\sqlalchemy\schema.py”, line 113,
in __call__
return type.__call__(self, name, metadata, *args, **kwargs)
File “c:\Python25\lib\site-packages\sqlalchemy-0.5.0rc1-py2.5.egg\sqlalchemy\schema.py”, line 242,
in __init__
_bind_or_error(metadata).reflecttable(self, include_columns=include_columns)
File “c:\Python25\lib\site-packages\sqlalchemy-0.5.0rc1-py2.5.egg\sqlalchemy\schema.py”, line 2054
, in _bind_or_error
raise exc.UnboundExecutionError(msg)
sqlalchemy.exc.UnboundExecutionError: The MetaData is not bound to an Engine or Connection. Executi
on can not proceed without a database to execute against. Either execute with an explicit connectio
n or assign the MetaData's .bind to enable implicit execution.
Офлайн
Да, действительно, в момент импорта модуля metadata еще не с биндина с engin. Сейчас покопаю дальше
Офлайн
Спасибо :-)
Мне уже прямо неудобно становится, я так злоупотребляю… Даже не знаю, как вас благодарить :-)
Хотите пряников? Или, например, гифт-кард на амазон? Или чем я отсюда могу быть вам полезна?
Офлайн
Ответ есть на официальном сайте TG :)
from turbogears.database import metadata, bind_meta_data
bind_meta_data()
item = Table('team_ne', metadata, autoload = True)
listen = Table('listen', metadata, autoload = True)
class Item(object): pass
class Listen(object): pass
mapper(Item, item)
mapper(Listen, listen)
Отредактировано (Янв. 9, 2009 17:20:40)
Офлайн
PooHУ меня, кстати, не работает. Утверждает, что, мол,w.save(ofile)
Отредактировано (Фев. 16, 2009 18:48:29)
Офлайн