频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

使用TurboGears和Python开发Web 站点

来源: 作者: 出处:巧巧读书 2006-09-23 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 下一页 


清单 3. 启动测试服务器


~/dev/TG-Commerce$ python start-tgcommerce.py
... (output snipped) ...
05/Mar/2006:11:31:54 HTTP INFO Serving HTTP on http://localhost:8080/
      

查看所提供的 URL 的测试页面,然后使用 Ctrl-C 杀掉这个服务器。

创建一个模型

    SQLObject 是对象关系映射器(ORM)库,它让我们可以开发数据库持久的 Python 对象。我们定义一个 Python 类,并添加所需要的属性(域),然后让 SQLObject 生成创建表、插入新记录以及查找、更新或删除现有记录时所需用到的 SQL 语句。

    SQLObject 可以支持多种数据库,包括 MySQL、PostgreSQL、Firebird 等。在 参考资料 给出的链接中我们可以找到有关 SQLObject 的更多信息。

    在这个例子中,我们使用 SQLite 作为后台的数据库。SQLite 是一个轻量级的数据库,它不需要进行任何配置,只是以简单文件的形式保存在磁盘上。要使用 SQLite,我们需要使用 setuptools 安装 pysqlite 库:

easy_install pysqlite

    要配置 TurboGears 数据库,我们需要在 dev.cfg 文件中指定 sqlobject.dburi。对于 SQLite 来说,我们要指定数据库文件所在的位置的路径:


清单 4. 开发配置文件(dev.cfg)

sqlobject.dburi="notrans_sqlite:///path/to/devdir/TG-Commerce/tgcommerce.database"
server.environment="development"
autoreload.package="tgcommerce"
      

    TurboGears 快速启动使用样例代码创建并提前生成了一个 model.py 文件。这就是 SQLObject 类应该保存的地方。最上面一节设置数据库连接信息:


清单 5. 模型样例代码(model.py)

from sqlobject import *
from turbogears.database import PackageHub
hub = PackageHub("tgcommerce")
__connection__ = hub
      

     接下来是模型类。每个类表示数据库中的一个表,它是使用一个映射为数据库列的类级属性定义的。这些属性是 SQLObject 列类型的实例,包括基本数据类型,例如 StringColCurrencyCol;以及关系类型,例如 ForeignKeyMultipleJoin

    对于这个购物车来说,有一个层次 Category 类和一个简单的 Product 类。目录层次是由父 ForeignKey 和子类 MultipleJoin 定义的。


清单 6. Category 和 Product 类(model.py,续)

class Category(SQLObject):
    name = StringCol(length=64)
    parent = ForeignKey('Category', default=None)
    subcategories = MultipleJoin('Category', joinColumn='parent_id')
    products = MultipleJoin('Product')
class Product(SQLObject):
    name = StringCol(length=64)
    sku = StringCol(length=64)
    price = CurrencyCol(notNone=True, default=0.0)
    category = ForeignKey('Category')
      

  要验证这个模型,请使用 tg-admin sql sql 命令显示创建所需要的表使用的 SQL 代码。注意 SQLObject 会为每个表都创建一个 id 列。即使没有定义主键,这种操作也会发生。有关 SQLObject 的更多文档,请参见 参考资料 给出的链接。

巧 巧 读 书:http://www.qqread.com/other-devtool/u210714.html 更多文章 更多内容请看Python实用指南Wlan组网----家庭专题Python相关文章专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 9 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章