免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2054 | 回复: 0
打印 上一主题 下一主题

tg2使用及启用dbmechanic遇到的小问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-11 14:24 |只看该作者 |倒序浏览

                                    TG2已经更新到a4,据说还可能会有一个alpha5。不过总的来说,基本上稳定了,可以用了,也更像TG1了,虽然完整度上还比不上。
    因为TG2的默认组件与TG1明显不同,使用了SA,Genshi, TW,导致了严重依赖SO,KID,WIDGET的toolbox不能在TG2上使用,Toolbox2还在开发中。现在TG2使用了
dbsprockets以及它的DBMechanic,有些类似django的admin。
    我想试用下,感觉感觉。
1.安装virtualenv
>easy_install virtualenv
... virtualenv-1.2 installed
2.建立tg2的virtualenv
d:\pyweb>virtualenv --no-site-packages tg2a4
....done
--no-site-packages的意思是自己的第三方包只会安装到自己的虚拟环境目录下,(如tg2a4\lib\site-packages\,而不会安装到真实的python安装目录下。
3.切换到tg2a4虚拟环境下。
d:\pyweb>cd tg2a4
d:\pyweb\tg2a4>scripts\activate.bat
(tg2a4)d:\pyweb\tg2a4>   注意(tg2a4)说明已经处于tg2a4虚拟环境下
4.我在这个目录下建立一个project目录,在其中生成一个示例。
(tg2a4)d:\pyweb\tg2a4> mkdir project
(tg2a4)d:\pyweb\tg2a4> cd project
(tg2a4)d:\pyweb\tg2a4\project> paster quickstart
   ...... [project] web online
   ...... ..
   ...... [identity] yes
   ......
自动生成目录,切换进项目目录,webonline
5.这里只是测试,就没有在新建model了,直接生成表
(tg2a4)d:\pyweb\tg2a4\projec\webonline> paster setup-app development.ini
会调用d:\pyweb\tg2a4\projec\webonline\webonline\websetup.py来生成对应的数据库和表
6.启动服务,浏览网页
(tg2a4)d:\pyweb\tg2a4\projec\webonline> paster serve --reload development.ini
.... 0.0.0.0:8080
访问没有问题,
7.启用管理页面,其实主要是浏览和更改数据用的。
(tg2a4)d:\pyweb\tg2a4\projec\webonline> vim webonline\controllers\root.py
vim是一个编辑器,可以使用任何一款编辑器都可以。
[/url]

               
               
                from tg import redirect, validate
from abc.model import DBSession, metadata
from dbsprockets.dbmechanic.frameworks.tg2 import DBMechanic #去掉前面的注释
from dbsprockets.saprovider import SAProvider                #去掉前面的注释
class RootController(BaseController):
    admin = DBMechanic(SAProvider(metadata), '/admin')       #去掉前面的注释
基本上和DBMechanic相关的都要把前面的注释去掉。
重新访问http://localhost:8080/admin
可以显示,但点示任何一个表名,如"tg_user",出错,说末绑定错误,大致意思是说没有关联到engine或metadata上不能执行sql语名("UnboundExecutionError: This Select object is not bound and does not support direct execution")
8.翻查tg2a4的changlog,文档和
[url=http://code.google.com/p/dbsprockets/]dbsprockets的文档和论坛。知道了解决方法。

关键在于webonline\model\__ini__.py的"def init_model()"方法中,metadata没有绑定engine
修改如下:
def init_model(engine):
    DBSession.configure(bind=engine) # not really needed if engine is
bound to metadata but anyway...
    metadata.bind = engine # -- this, add this if using dbsprockets
9.在TG2中,为了支持同时使用多数据库,在TG2a4中,不再在def init_model()中设置meta.bind=engine,需要手式添加,同样你可以添加多个metadata,绑定到不同的engine上
如: , metadata1.bind=engine1, metadata2.bind=engine2,.....
不同的engine对应不同的数据库,上层程序只要使用不同的metadata生成使用表就可以了。
10. 总的来说,我觉得生成项目时,还是应该加上这个,至少应该加上并注释。初学者或不需要多数据库支持者可以最快的使程序运行起来,这第一印象是很重要的。
另外,dbmechanic的界面比较难看。比起django admin来说,美化上还是有很大改进空间的。
   
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13637/showart_1184003.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP