7.蛤蟆Python脚本学习实战笔记七电子公告板介绍.docx

7.蛤蟆Python脚本学习实战笔记七电子公告板介绍.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7. 蛤蟆Python脚本学习实战笔记七 电子公告板 本篇名言:“不管生活如何变故,道路如何曲折,你千万别掉队,因为希望和梦想就在前面。” 需求 如何创建通过网络发布和回复信息的简单系统.系统内有自己的一个作为论坛的机制。 工具和准备 除了CGI工具外, 还需要一个SQL数据库,这里使用PostgreSQL数据库。 下载地址如下:  HYPERLINK /products-services-training/pgdownload \l windows /products-services-training/pgdownload#windows 双击安装即可。 此外,还需要一个与PostgrelSQL数据库通信的API模块,使用psycopg即可。 下载链接如下  HYPERLINK /projects/python/win-psycopg/ /projects/python/win-psycopg/ 注意Python版本号和 postgrelSQL的版本号。 双击安装后 ,进行导入 import psycopg2 即可判断是否正常。 创建数据库 数据库的结构和所要解决的问题联系的很紧密。 打开PostgrelSQL命令行模式如下图1: #create database bbs; #\c bbs; #CREATE TABLE messages ( id SERIAL PRIMARY KEY, subject TEXT NOT NULL, sender TEXT NOT NULL, reply_to INTEGER REFERENCES messages, text TEXT NOT NULL ); #\d 显示如下: 关联列表 架构模式 | 名称 | 型别 | 拥有者 +++ public | messages | 资料表 | postgres public | messages_id_seq | 序列数 | postgres (2 行记录) 拥有5个字段, Id用于标识唯一的消息 subject包括消息主体的字符串 Sender:包括发送者名字、EMAIL地址或者其他信息的字符串 Reploy_to :如果消息是回复其他消息的、那么这个字段就包括那个消息的ID Text: 包括消息内容的字符串。 初次实现 先进行一个简单那的测试: import psycopg2 conn=psycopg2.connect(user=postgres password=huawei dbname=bbs) curs=conn.cursor() curs.execute(select * from messages) curs.fetchall() [] 所有信息为空,所以没有得到什么。 对于每个消息来说,获取reply_to字段,如果是None(不是回复),那么将这条消息添加到顶级消息的李彪。否则将其添加到children[parent_id]自列表中。 为顶级消息调用format函数。Format函数打印消息的主题。而且如果消息有任何回复的话,会打开一个blockquote元素,对于每一个回复调用format函数(递归),然后结束blockquote元素。 正式初次实现代码如下: #!D:\python27\python.exe print Content-type: text/html\n import cgitb; cgitb.enable() import psycopg2 conn = psycopg2.connect(dbname=bbs user=postgres password=huawei) curs = conn.cursor() print html head titleThe FooBar Bulletin Board/title /head body h1The FooBar Bulletin Board/h1 curs.execute(SELECT * FROM messages) rows = curs.fetchall() toplevel = [] children = {} for row in rows: parent_id = row[reply_to] if parent_id is None: toplevel.append(row) else: children.setdefault(

文档评论(0)

w5544434 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档