- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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(
您可能关注的文档
最近下载
- 二年级语文上单元归类复习.pdf VIP
- ASME B18.29.1-2010 螺旋线圈螺纹插入-自由运行和螺纹锁定(英寸系列).pdf VIP
- 电力行业检查标准清单(发电部分).docx VIP
- 2025至2030年中国四川省渔业行业发展趋势预测及投资规划研究报告.docx
- 新苏教版六年级科学上册试卷1-5单元测试卷含答案5单元全册打包期中期末复习.docx VIP
- 危大工程与超过一定规模的危大工程清单(住建部2018第31号文).pdf VIP
- 2025小学科学学科教师基本功大赛试题(理论部分附答案).docx VIP
- 钢筋混凝土化粪池22S702.docx VIP
- L23R401 城镇热水管道直埋敷设图集.docx
- GMP文件管理规程(新版).pdf VIP
文档评论(0)