python web py入门(4)-从数据库读取数据显示到网页

在你开始使用数据库之前,确保你已经安装了合适的数据库访问库。比如对于MySQL数据库,使用mysql-connector客户端来连接。
下载Mysql数据并安装:
从下面的连接里下载到Mysql数据库,它的版本是mysql-5.5.59-winx64.msi,这个适合Windows 64位版本,如果是linux你自己下载相应的版本。

https://dev.mysql.com/downloads/mysql/

python web py入门(4)-从数据库读取数据显示到网页_第1张图片

然后再下载数据库的python客户端工具mysql-connector-python-8.0.6-rc-py3.6-windows-x86-64bit.msi:
https://dev.mysql.com/downloads/connector/python/

然后安装这两个工具,如果不熟悉,可以学习我的课程:

在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672

配置数据库完成之后,就可以在服务器管理器看到如下图:

python web py入门(4)-从数据库读取数据显示到网页_第2张图片

然后可以mysql数据库管理工具来创建数据库和创建表等,还可以插入数据:

python web py入门(4)-从数据库读取数据显示到网页_第3张图片

在这个工具里就可以运行下面的SQL语句:

-- 配置MySQL连接为utf-8
SET NAMES 'utf8';
SET CHARSET 'utf8';

-- 创建数据库
CREATE DATABASE IF NOT EXISTS forum DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
USE forum;

-- 创建表users
CREATE TABLE IF NOT EXISTS users
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    email VARCHAR(100) NOT NULL,
    name VARCHAR(100) NOT NULL,
    password TEXT NOT NULL,
    picture TEXT NOT NULL,
    description TEXT,
    time TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY(id),
    UNIQUE KEY(email),
    UNIQUE KEY(name)
);

-- 创建表posts
CREATE TABLE IF NOT EXISTS posts
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title TEXT NOT NULL,
    content TEXT NOT NULL,
    time TIMESTAMP DEFAULT NOW(),
    user_id INT UNSIGNED,
    PRIMARY KEY(id),
    FOREIGN KEY(user_id) REFERENCES users(id)
);

-- 创建表comments
CREATE TABLE IF NOT EXISTS comments
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    content TEXT NOT NULL,
    time TIMESTAMP DEFAULT NOW(),
    user_id INT UNSIGNED,
    parent_id INT UNSIGNED,
    quote_id INT UNSIGNED,
    PRIMARY KEY(id),
    FOREIGN KEY(user_id) REFERENCES users(id),
    FOREIGN KEY(parent_id) REFERENCES posts(id),
    FOREIGN KEY(quote_id) REFERENCES comments(id)
);

-- 设置时区为北京时间
-- 1.以下命令仅在当前会话期间有效
/*SET time_zone = '+8:00';*/
-- 2.以下命令则全局有效
SET GLOBAL time_zone = '+8:00';

运行这段SQL语句之后,就会创建一个论坛的数据库,但是为了简单地测试,我在这个数据库添加了自己的测试表:

CREATE TABLE IF NOT EXISTS mintest
(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    email VARCHAR(100) NOT NULL,
    NAME VARCHAR(100) NOT NULL,    
    TIME TIMESTAMP DEFAULT NOW(),
    PRIMARY KEY(id),
    UNIQUE KEY(email),
    UNIQUE KEY(NAME)
);

这个表非常简单,只有四个字段,接着在这个表里插入几条数据,以便WEB可以查询到数据:

INSERT INTO `forum`.`mintest` (`email`, `NAME`) VALUES ('[email protected]', 'caimouse1'); 

这时候,在这个表里就有几条数据,至于几条数据,就看你自己的操作了,如下:

python web py入门(4)-从数据库读取数据显示到网页_第4张图片

接着下来,就是创建WEB程序了,把数据库里的数据显示到页面。

首先你需要创建一个数据库对象:
db = web.database(dbn='mysql', host='127.0.0.1', port=3308,
                  db='forum', user='root', pw='12345678')
根据需要修改这里 -- 尤其是username 、 password 、 dbname -- 。 MySQL用户还需要把 dbn 定义改为 mysql。)
这就是所有你需要做的 -- web.py将会自动处理与数据库的连接和断开。
然后把URL列表改回来,只保留 /:
'/', 'index',
像这样编辑并替换 index.html 的全部内容:
$def with (mintests)


    $for test in mintests:
       
  • $test.email

  •    
  • $test.NAME


这个模板就是把数据库的结果显示到页面里。完整的代码如下:

#python 3.6    
#蔡军生     
#http://blog.csdn.net/caimouse/article/details/51749579    
#
import web

urls = (
    '/', 'index'
)


app = web.application(urls, globals())
render = web.template.render('templates/')
db = web.database(dbn='mysql', host='127.0.0.1', port=3308,
                  db='forum', user='root', pw='12345678')

class index:
    def GET(self):
       email = db.select('mintest')
       return render.index(email)        
    

if __name__ == "__main__":
    app.run()

运行这个程序,结果输出如下:

python web py入门(4)-从数据库读取数据显示到网页_第5张图片

到这里就实现使用WEBPY显示数据库的过程,其实是比较简单的。不过,记得更最新版本的WEB.PY项目:

https://github.com/9073204qq/webpy

否则执行MYSQL数据库的查询时,就会出错,因为原来的代码里有一个BUG。

TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369

比特币源码入门教程

https://edu.csdn.net/course/detail/6998

深入浅出Matplotlib
https://edu.csdn.net/course/detail/6859

深入浅出Numpy
http://edu.csdn.net/course/detail/6149 

Python游戏开发入门

http://edu.csdn.net/course/detail/5690

你可能感兴趣的:(webpy)