目录
1.项目目标
利用之前的知识,做出一个在浏览器中输入网址和 id (或者姓名,年龄等),通过Python实现将MySQL数据库里符合输入的id (或者姓名,年龄等)的数据,进行增删改查等操作,并将结果返回到浏览器。
2.实现过程
(1)使用web.py
既然要在浏览器上运行,那当然要用到web.py来帮我们。
首先把必要的代码写好
import web
urls = (
'insert', 'insert',
'select', 'select',
'delete', 'delete',
'update', 'update',
'select/name', 'select_name',
'select/age', 'select_age',
)
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
这里我的 urls 有六个,分别是增加,查询,删除,改,按照姓名/年龄查询。
(2)连接MySQL数据库
连接MySQL数据库,这里我用到的是 pymysql 库。
打开数据库连接
import pymysql
def connect():
# 打开数据库链接
db = pymysql.connect(host="127.0.0.1",
user="root",
password="********************",
database="scores")
return db
关闭数据库方法
def close(db):
db.close()
这两个方法写完后,就要写增删改查的方法了,增删改的代码几乎一致,就是 sql 语句不同,就不一个个放出来了。
增删改 sql 语句拼装
#增
sql = "insert into student (`name`,`age`,`gender`) values " +\
"(" + "'" + name + "'," + age + ",'" + gender + "'" + ")"
#删
sql = "delete from student where id = " + id + ";"
#改
sql = "update student set `name` = " + "'" + name + "'" \
+ "where id = " + id + ";"
增删改方法
接着就是把增删改的方法写出来,增和改写的方法和删一样,只是 sql 语句和传进去的参数不同而已,就不展示了。
def delete(id):
db = connect()
cursor = db.cursor()
sql = "delete from student where id = " + id + ";"
try:
cursor.execute(sql)
db.commit()
except:
# 如果执行错误就回滚到执行sql语句前的状态
db.rollback()
close(db)
查询方法
查询方法与增删改的方法不同,需要将数据处理后返回到浏览器上,sql 语句的拼装也不同。
def select(id):
result = []
db = connect()
cursor = db.cursor()
sql = "select name, age, gender from student where id = " + id + ";"
try:
cursor.execute(sql)
data = cursor.fetchall()
# 输出查询结果
for row in data:
result.append({"name": row[0], "age": row[1], "gender": row[2]})
except:
pass
close(db)
return result
上面的 sql 语句是用 id 进行查询,还有用名字和年龄查询的 sql 语句如下
#年龄
sql = "select name, age, gender from student where age = " + age + ";"
#姓名
sql = "select name, age, gender from student where name = " + name + ";"
(3)调用增删改查方法,返回数据
增,删,改
这里我们先定义一个类,然后定义一个GET方法
class delete:
def GET(self):
然后利用 web.input() 方法获取 id 等数据,再调用增删改等方法
class delete:
def GET(self):
id = web.input().id
delete(id)
return {"ret": "ok"}
上面调用的是删除的方法,增和改只要换一个方法就行。
查询
与增删改不同,查是要返回数据的,所以最好用一下 json 库。
在最开始的地方引入 json 库
import json
然后第一步和增删改一致
class select:
def GET(self):
id = web.input().id
接着把调用方法的数据放入变量内,用 json.dumps() 方法格式化后返回到浏览器中
class weather_select:
def GET(self):
id = web.input().id
result = select(id)
return json.dumps(result)
上面是用 id 查询,用姓名或年龄查询只需将
id = web.input().id
换成
name = web.input().name
#或
age = web.input().age
再将调用方法传入的参数改为 name 或 age 就行了。
3.试验方法
在运行程序后在浏览器内输入对应网址和数据,回车后就可以看到结果。