在你开始使用数据库之前,确保你已经安装了合适的数据库访问库。比如对于MySQL数据库,使用mysql-connector客户端来连接。
下载Mysql数据并安装:
从下面的连接里下载到Mysql数据库,它的版本是mysql-5.5.59-winx64.msi,这个适合Windows 64位版本,如果是linux你自己下载相应的版本。
然后再下载数据库的python客户端工具mysql-connector-python-8.0.6-rc-py3.6-windows-x86-64bit.msi:
https://dev.mysql.com/downloads/connector/python/
然后安装这两个工具,如果不熟悉,可以学习我的课程:
配置数据库完成之后,就可以在服务器管理器看到如下图:
然后可以mysql数据库管理工具来创建数据库和创建表等,还可以插入数据:
在这个工具里就可以运行下面的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 ('90732041@qq.com', 'caimouse1');
这时候,在这个表里就有几条数据,至于几条数据,就看你自己的操作了,如下:
接着下来,就是创建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()
运行这个程序,结果输出如下:
到这里就实现使用WEBPY显示数据库的过程,其实是比较简单的。不过,记得更最新版本的WEB.PY项目:
否则执行MYSQL数据库的查询时,就会出错,因为原来的代码里有一个BUG。
比特币源码入门教程
Python游戏开发入门