Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2009 15:26:39

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

Вот я и добралась до работы :-)

Маппинг таблиц выглядит у меня вот так:

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



Офлайн

#2 Янв. 9, 2009 16:24:07

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

честно говоря 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)
Дело в том что TG сам создает для вас и engine, и сессии по данным из конфига, вы же создаете лишние. Посмотрите выше я давал примеры для других случаев.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Янв. 9, 2009 16:41:20

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

А адрес, куда к базе подключаться, куда писать? *чеша в затылке*



Офлайн

#4 Янв. 9, 2009 16:48:59

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

hildi
А адрес, куда к базе подключаться, куда писать? *чеша в затылке*
а адрес у вас лежит в правильном месте, в файле конфигурации, в режиме отладки это файл dev.cfg
там есть строчка типа:
sqlalchemy.dburi=“postgres://admin:123@localhost/rieltiko”
это он и есть



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Янв. 9, 2009 16:58:20

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

Не работает, ругается на отсутствие энжин:


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.



Офлайн

#6 Янв. 9, 2009 17:06:37

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

Да, действительно, в момент импорта модуля metadata еще не с биндина с engin. Сейчас покопаю дальше



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Янв. 9, 2009 17:13:44

hildi
От:
Зарегистрирован: 2008-10-07
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

Спасибо :-)
Мне уже прямо неудобно становится, я так злоупотребляю… Даже не знаю, как вас благодарить :-)
Хотите пряников? Или, например, гифт-кард на амазон? Или чем я отсюда могу быть вам полезна?



Офлайн

#8 Янв. 9, 2009 17:13:59

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

Ответ есть на официальном сайте 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)
там же, кстати, есть как указать параметры пула
sqlalchemy.pool_recycle = 30
в файле конфигурации
http://docs.turbogears.org/1.0/SQLAlchemy посмотрите там еще много интересного

ЗЫ: никаких злоупотреблений, мне самому интересно - я не пробовал в ТГ таблицы с отображением из существующей базы, к тому же у нас праздники :)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Янв. 9, 2009 17:20:40)

Офлайн

#9 Фев. 16, 2009 18:16:16

saabeilin
От:
Зарегистрирован: 2009-02-14
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

TG+SA: connection pool и экспорт в excel - как сделать "красиво"?

PooH
        w.save(ofile)
У меня, кстати, не работает. Утверждает, что, мол,

File '/home//controllers/reports.py', line 31 in excel
w.save(ofile)
File ‘build/bdist.linux-x86_64/egg/pyExcelerator/Workbook.py’, line 547 in save
File ‘build/bdist.linux-x86_64/egg/pyExcelerator/CompoundDoc.py’, line 532 in save
TypeError: coercing to Unicode: need string or buffer, cStringIO.StringO found

pyExcelerator сначала был “просто_установленный”, потом из svn trunk'а, результат один. Кстати, и со StringIO не работает.

UPDATE: отбой, замена на xlwt помогла, все отлично работает.



Отредактировано (Фев. 16, 2009 18:48:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version