tornado 入门之(MySQL+Pymysql 创建表、删除表、数据的增、删、改、查)酱酱仙的博客【5】
连接数据库的准备
- 安装pymysql
pip install pymysql
- 安装 SQLAlchemy
pip install sqlalchemy
- 安装Mysql
- 安装Navicat for MySQL 提取码:ytue
- 安装Postman 下面代码打包有下载
客户端连接mysql,问题:1251 client does not support …
解决方法 https://blog.csdn.net/u012604745/article/details/80632860
创建项目
添加模板模型静态等文件
连接数据库步骤
创建模型modules.py
from sqlalchemy import Column,Integer,String
from utils.conn import Base
def creat_db():
# 映射模型对应的表
Base.metadata.create_all()
def drop_db():
# 删除模型对应的表
Base.metadata.drop_all()
class Student(Base):
id = Column(Integer,primary_key=True,autoincrement=True)
s_name = Column(String(10),unique=True,nullable=False) # nullable可空的 unique 独一无二
s_age = Column(Integer,default=18)
__tablename__ = 'student'
连接数据库代码conn.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 数据库格式
db_url = 'mysql+pymysql://root:123456@127.0.0.1:3306/tornado9'
# 创建引擎
engine = create_engine(db_url,echo=True)
# create_engine方法返回一个Engine实例,Engine实例只有直到触发数据库事件时才真正去连接数据库。
# echo参数是设置 SQLAlchemy 日志记录,这通过 Python 的标准logging模块的快捷方式。启用它,我们会看到产生的所有生成的 SQL,sqlalchemy与数据库通信的命令都将打印出来
# 模型与数据库表进行关联的基类,模型必须继承于Base
Base = declarative_base(bind=engine)
# 创建session会话
DbSession = sessionmaker(bind=engine)
session = DbSession()
路由配置manage.py
import os
import tornado.web
import tornado.ioloop
from app.views import MainHandler, DBHandler, DropDBHandler, AddStuDBHandler, StuDBHandler
def make_app():
return tornado.web.Application(handlers=[
(r'/', MainHandler),
(r'/init_db', DBHandler), # 创建表
(r'/drop_db', DropDBHandler), # 删除表
(r'/add_stu', AddStuDBHandler),# 添加数据 分单数据加入、多数据加入
(r'/stu_db', StuDBHandler), # 数据操作 增、删、改、查
],
template_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates'),
static_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'static')
)
if __name__ == '__main__':
app = make_app()
app.listen(8080)
tornado.ioloop.IOLoop.current().start()
功能实现views.py
import tornado.web
from app.models import creat_db, drop_db, Student
from utils.conn import session
from sqlalchemy import not_,or_,and_
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello day02!")
class DBHandler(tornado.web.RequestHandler):
def get(self):
creat_db()
self.write('创建表成功')
class DropDBHandler(tornado.web.RequestHandler):
def get(self):
drop_db()
self.write('删除表成功')
class AddStuDBHandler(tornado.web.RequestHandler):
def post(self):
# 创建单个数据
# stu = Student()
# stu.s_name = '仙仙'
# session.add(stu)
# session.commit()
# 创建多条数据,通过列表
stus = []
for i in range(10):
stu = Student()
stu.s_name = '仙仙_%s' %i
stus.append(stu)
session.add_all(stus)
session.commit()
self.write('添加数据')
class StuDBHandler(tornado.web.RequestHandler):
def get(self):
session.query(Student).filter(Student.s_name == '仙仙_0').all()
self.write('查询数据')
def post(self):
stu = Student()
stu.s_name = '仙仙'
session.add(stu)
session.commit()
self.write('添加数据')
def delete(self):
session.query(Student).filter(Student.s_name == '仙仙_1').delete()
session.commit()
self.write('删除数据')
def patch(self): # 修改部分属性
#方式一
# stu = session.query(Student).filter(Student.s_name == '仙仙').first()
# stu.s_name = '小仙仙'
# session.add(stu)
# session.commit()
#方式二
session.query(Student).filter(Student.s_name == '小仙仙').update({'s_name':'大仙仙'})
session.commit()
self.write('修改数据')
web访问127.0.0.1:8080/init_db 创建表
postman 进行 post请求 加入数据
修改数据
工具代码打包
https://download.csdn.net/download/qq_39610398/11832429
转载:https://blog.csdn.net/qq_39610398/article/details/102070303
查看评论