python实现从零搭建图书管理系统

学习目标

一、虚拟环境

1.1 虚拟环境的创建

mkvirtualenv tornado_py3 -p python3

1.2 安装tornado

pip install tornado

1.3 虚拟环境其他的操作

# 虚拟环境
mkvirtualenv  # 创建虚拟环境
rmvirtualenv  # 删除虚拟环境
workon  # 进入虚拟环境、查看所有虚拟环境
deactivate  # 退出虚拟环境

# pip
pip install  # 安装依赖包
pip uninstall  # 卸载依赖包
pip list  # 查看已安装的依赖库

二、搭建项目

三、完成请求的方式

# 类似django中视图
class MainHandler(tornado.web.RequestHandler):
    # 得到数据
    def get(self):
        # 这里就是返回的内容
        self.write("得到数据")
    # 添加新的数据
    def post(self):
        self.write("添加新的数据")

    # 修改数据
    def put(self):
        self.write("修改数据")

    # 删除数据
    def delete(self):
        self.write("删除数据")

四、设置静态文件

# 程序配置
def make_app():
    return tornado.web.Application([
        (r"/books/", MainHandler),
    ],
        static_path="./static" # 配置静态文件夹路径
    )

五、配置模板

5.1 加载模板配置

def make_app():
return tornado.web.Application([
    (r"/books/", MainHandler),
],
    static_path="./static", # 配置静态文件夹路径
    template_path = "./templates",# 配置模板路径
)

5.2 定义模板




    
    Title


    

{{ show }}

5.3 渲染模板

模板内容使用render返回内容

# 类似django中视图
class MainHandler(tornado.web.RequestHandler):
    # 得到数据
    def get(self):
        # 这里就是返回的内容
        self.render("index.html",show='显示内容')

六、加载前端给的数据

6.1 加载前端给个模板文件

6.2 加载前端给的前端静态资源

七、数据库操作

7.1 数据库初始化

-- 创建数据库
create database book_manager charset=utf8;

-- 使用数据库
use book_manager;

-- 创建表
CREATE TABLE books(id int UNSIGNED PRIMARY KEY AUTO_INCREMENT ,btitle VARCHAR(30) not NULL ,bauthor VARCHAR(30) NOT NULL ,bperson VARCHAR(30),bpub_date DATE NOT NULL ,bread INT UNSIGNED,bcomment INT UNSIGNED);


-- 插入数据
insert into books(btitle, bauthor, bperson, bpub_date, bread, bcomment) VALUES
('红楼梦','曹雪芹','宝 ','1980-5-1',12,34),
(' 游记','施耐安','悟空','1986-7-24',36,50),
(' 浒传','吴承恩','林冲','1995-12-24',20,80),
('三国演义','罗贯中','曹操','1980-5-1',58,24);

7.2 安装pymysql

pip install pymysql

八、使用同步的方式操作数据

8.1 get请求

8.1.1get请求处理

class MainHandler(tornado.web.RequestHandler):
    # 得到数据
    # 异步方法
    def get(self):

        # 1. 从数据库得到数据
        # 1.1连接数据库
        # 创建Connection连接
        conn = connect(host='localhost', port=3306, database='book_manager', user='root', password='mysql', charset='utf8')
        # 获得Cursor对象
        cs1 = conn.cursor()

        # 1.2 执行查询的sql语句
        cs1.execute("select * from books;")
        # 得到数据库的数据
        data = cs1.fetchall()

        # 1.3 关闭
        cs1.close()
        conn.close()

        # 操作
        #for temp in data:
        #  print(temp)



        # 返回数据
        self.render('index.html',show_list = data)

8.1.2模板数据展示

     
{% for temp in show_list%}

    
    
    
    
    
    
    
    
    

{%end%}

8.2 post请求

def post(self):
    # 得到请求的数据
    # 使用元组
    params_list = list()
    params_list.append(self.get_argument('btitle'))
    params_list.append(self.get_argument('bauthor'))
    params_list.append(self.get_argument('bperson'))
    params_list.append(self.get_argument('bpub_date'))
    params_list.append(self.get_argument('bread'))
    params_list.append(self.get_argument('bcomment'))

    print(params_list)

    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = connect(host='localhost', port=3306, database='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 = conn.cursor()

    # 1.2 执行查询的sql语句
    cs1.execute("insert into books(btitle,bauthor,bperson,bpub_date,bread,bcomment) values(%s,%s,%s,%s,%s,%s)",
                params_list)
    # 得到数据库的数据
    conn.commit()

    # 1.3 关闭
    cs1.close()
    conn.close()

    self.write({"data": "success"})

8.3put请求

def put(self):
    # 得到数据
    body_data = self.request.body.decode("utf-8")

    # 解析成字典
    params_dict = json.loads(body_data)

    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = connect(host='localhost', port=3306, database='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 = conn.cursor()

    # btitle, bauthor, bperson, bpub_date, bread, bcomment
    # 1.2 执行查询的sql语句

    cs1.execute(
        "update books set btitle = %(btitle)s,bauthor = %(bauthor)s,bperson = %(bperson)s,bpub_date =%(bpub_date)s,bread = %(bread)s,bcomment = %(bcomment)s where id = %(id)s",
        params_dict
        )
    # 得到数据库的数据
    conn.commit()

    # 1.3 关闭
    cs1.close()
    conn.close()

    self.write({"data":"success"})

8.4 delete 请求

def delete(self):
        # 得到数据
        body_data = self.request.body.decode("utf-8")

        # 解析成字典
        params_dict = json.loads(body_data)

        # 1. 从数据库得到数据
        # 1.1连接数据库
        # 创建Connection连接
        conn = connect(host='localhost', port=3306, database='book_manager', user='root', password='mysql',
                       charset='utf8')
        # 获得Cursor对象
        cs1 = conn.cursor()

        # 1.2 执行查询的sql语句
        cs1.execute("delete from books where id = %(id)s", params_dict)

        conn.commit()

        # 1.3 关闭
        cs1.close()
        conn.close()

        self.write({"data":"success"})

九、异步请求改造

class MainHandler(tornado.web.RequestHandler):
# 得到数据
# 异步方法
async def get(self):
    print('get请求')
    # 等待3秒
    await asyncio.sleep(3)

    # 这里就是返回的内容
    self.render("index.html",show='显示内容')

十、异步

10.1 安装模块

pip3 install aiomysql

把所有请求改成异步请求

只需要方法前加async 再耗时返回时使用await返回

class MainHandler(tornado.web.RequestHandler):
# 得到数据
# 异步方法
async def get(self):
    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = await aiomysql.connect(host='localhost', port=3306, db='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 =  await conn.cursor()

    # 1.2 执行查询的sql语句
    await cs1.execute("select * from books;")
    # 得到数据库的数据
    data = await cs1.fetchall()

    # 1.3 关闭
    await cs1.close()
    conn.close()

    # 操作
    # for temp in data:
    #   print(temp)


    self.render('index.html', show_list=data)

async def post(self):
    # 得到请求的数据
    # 使用元组
    params_list = list()
    params_list.append(self.get_argument('btitle'))
    params_list.append(self.get_argument('bauthor'))
    params_list.append(self.get_argument('bperson'))
    params_list.append(self.get_argument('bpub_date'))
    params_list.append(self.get_argument('bread'))
    params_list.append(self.get_argument('bcomment'))

    print(params_list)

    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = await aiomysql.connect(host='localhost', port=3306, db='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 = await  conn.cursor()

    # 1.2 执行查询的sql语句
    await cs1.execute("insert into books(btitle,bauthor,bperson,bpub_date,bread,bcomment) values(%s,%s,%s,%s,%s,%s)",
                params_list)
    # 得到数据库的数据
    await conn.commit()

    # 1.3 关闭
    await cs1.close()
    conn.close()

    self.write({"data": "success"})

async def put(self):
    # 得到数据
    body_data = self.request.body.decode("utf-8")

    # 解析成字典
    params_dict = json.loads(body_data)

    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = await aiomysql.connect(host='localhost', port=3306, db='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 = await  conn.cursor()

    # btitle, bauthor, bperson, bpub_date, bread, bcomment
    # 1.2 执行查询的sql语句

    await cs1.execute(
        "update books set btitle = %(btitle)s,bauthor = %(bauthor)s,bperson = %(bperson)s,bpub_date =%(bpub_date)s,bread = %(bread)s,bcomment = %(bcomment)s where id = %(id)s",
        params_dict
    )
    # 得到数据库的数据
    await conn.commit()

    # 1.3 关闭
    await cs1.close()
    conn.close()

    self.write({"data": "success"})

async def delete(self):
    # 得到数据
    body_data = self.request.body.decode("utf-8")

    # 解析成字典
    params_dict = json.loads(body_data)

    # 1. 从数据库得到数据
    # 1.1连接数据库
    # 创建Connection连接
    conn = await aiomysql.connect(host='localhost', port=3306, db='book_manager', user='root', password='mysql',
                   charset='utf8')
    # 获得Cursor对象
    cs1 = await  conn.cursor()

    # 1.2 执行查询的sql语句
    await cs1.execute("delete from books where id = %(id)s", params_dict)

    await conn.commit()

    # 1.3 关闭
    await cs1.close()
    conn.close()

    self.write({"data":"success"})
展开阅读全文

页面更新:2024-03-07

标签:静态   语句   字典   对象   模板   操作   环境   数据库   内容   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top