保靖网站建设微商代理怎么找货源
news/
2025/9/23 12:12:28/
文章来源:
保靖网站建设,微商代理怎么找货源,酒店网站制作策划,旅游社网站建设规划书一、flask对于简单搭建一个基于python语言-的web项目非常简单
二、项目目录
示例代码 git路径 三、代码介绍
1、安装pip依赖
通过pip插入数据驱动依赖pip install flask-sqlalchemy 和 pip install pymysql
2.配置数据源 config.py
DIALECT mysql
DRIVER pymysql
USERN…一、flask对于简单搭建一个基于python语言-的web项目非常简单
二、项目目录
示例代码 git路径 三、代码介绍
1、安装pip依赖
通过pip插入数据驱动依赖pip install flask-sqlalchemy 和 pip install pymysql
2.配置数据源 config.py
DIALECT mysql
DRIVER pymysql
USERNAME root
PASSWORD 123456
HOST 127.0.0.1
PORT 3306
DATABASE tgcrm# mysql 不会认识utf-8,而需要直接写成utf8
SQLALCHEMY_DATABASE_URI {}{}://{}:{}{}:{}/{}?charsetutf8.format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS False
SQLALCHEMY_ECHO True# 加载密钥
key_access ^_^protect*py_^_^
3、引用orm框架 访问数据库
/mapper/exts.py
from flask_sqlalchemy import SQLAlchemy
db SQLAlchemy()4、启动文件 app.py
from flask import Flask
# 引用数据库启动文件
from mapper.exts import db
# 引用数据库配置文件
import config
# 引用数据库
from controller.user_controller import *app Flask(__name__)
app.config.from_object(config)
db.init_app(app)app.register_blueprint(user, url_prefix/user)# 全局拦截器校验token
app.before_request
def before():key str(request.headers.get(TOKEN))if key ! format(config.key_access):return Password errorelse:passif __name__ __main__:app.run(host0.0.0.0, port8060)5、数据库操作
通过Flask提供orm框架对数据库进行操作
5.1增加
# 添加 http://127.0.0.1:5000/user/add/2/1
user.route(/add/username/pwd)
def add_user(username, pwd):print(username, pwd)userinfo User(usernameusername, pwdpwd)db.session.add(userinfo)db.session.commit()# # 接受前端发来的数据# data json.loads(request.form.get(data))## # lesson: Operation System# # score: 100# lesson data[lesson]# score data[score]## # 自己在本地组装成Json格式,用到了flask的jsonify方法# info dict()# info[name] pengshuang# info[lesson] lesson# info[score] score# return jsonify(info)return jsonify(ADD_SUCCESS)
5.2删除
user.route(/delete/int:id)
def delete_user(id):print(id)# 第一种user1 User.query.filter().first()print(user1.id)db.session.delete(user1)db.session.commit()# 第二种user2 User.query.filter(User.id 2).delete()db.session.commit()return jsonify(DELETE_SUCCESS)
5.3修改
user.route(/update/int:id)
def update_user(id):user1 User.query.filter(User.id id).first()user1.username 我是修改后的db.session.merge(user1)db.session.commit()return jsonify(UPDATE_SUCCESS)
5.4查询
user.route(/list)
def list_users():users User.query.all()print(users)users_output []for user in users:users_output.append(user.to_json())return jsonify(users_output)
5.5条件查询
1.filter_by和filter 两种写法根据版本的不同 filter_by: 用于查询简单的列名不支持比较运算符 filter比filter_by的功能更强大支持比较运算符支持or_、in_等语法。 data UserInfo.query.filter(UserInfo.name1).all() data UserInfo.query.filter_by(name1).all() 1. 根据用户名查询符合条件的第一条数据 User.query.filter_by(usernameusername).first() print(查询1, user1.to_json()) 2. 查询名字结尾字符为g的所有数据[开始/包含] User.query.filter(User.username.endswith(g)).all() User.query.filter(User.username.contains(g)).all() 3. 查询名字不等于wang的所有数据[2种方式] from sqlalchemy import not_ 注意了啊逻辑查询的格式逻辑符_(类属性其他的一些判断) User.query.filter(not_(User.usernameyang)).all() User.query.filter(User.username!yang).all() 4. 查询名字和邮箱都以 li 开头的所有数据[2种方式] from sqlalchemy import and_ User.query.filter(and_(User.username.startswith(li), User.email.startswith(li))).all() User.query.filter(User.username.startswith(li), User.email.startswith(li)).all() 5. 查询password是 123456 或者 email 以 itheima.com 结尾的所有数据 from sqlalchemy import or_ User.query.filter(or_(User.pwd123456, User.email.endswith(tiantian.com))).all() 6. 查询id为 [1, 3, 5, 7, 9] 的用户列表 User.query.filter(User.id.in_([1, 3, 5, 7, 9])).all() 7. 查询name为liu的角色数据 关系引用 # 举例 暂时没有 User.query.filter_by(usernameliu).first().role.name 8.获取第一条记录 User.query.first() 6、分页对象 has_prev/has_next——是否有上一页/下一页 Items——当前页的数据列表 prev_num/next_num——上一页/下一页的页码 total——总记录数 pages——总页数
user.route(/loadUserPage/int:page/int:per_page)
def list_user(page, per_page): 用户分页 # 每一页的数据大小-per_page 页码-page# 1. 查询用户信息user User.query# 2. 准备分页的数据print(page, per_page)user_page_data user.paginate(page, per_pageper_page)users_output []for user in user_page_data.items:users_output.append(user.to_json())print(当前页的数据列表, users_output)print(是否有上一页, user_page_data.has_prev)print(是否下一页, user_page_data.has_next)print(上一页的页码, user_page_data.prev_num)print(下一页的页码, user_page_data.next_num)print(总记录数, user_page_data.total)print(总页数, user_page_data.pages)return jsonify(users_output)输出
当前页的数据列表 [{pwd: 2, id: 2, username: 2, nick: 2}]
是否有上一页 True
是否下一页 True
上一页的页码 1
下一页的页码 3
总记录数 7
总页数 7四、多模块配置 蓝图blueprint
在app项目中引用可以在app中声明多个路径 /user、/admin 、/customer等等
from controller.user_controller import userapp Flask(__name__)
app.config.from_object(config)
db.init_app(app)app.register_blueprint(user, url_prefix/user)
在子应用中声明 controller/user_controller
from flask import Blueprint, jsonify, request, jsonuser Blueprint(user, __name__)# 查询全部 http://127.0.0.1:5000/user/list
user.route(/list)
def list_users():users User.query.all()print(users)users_output []for user in users:users_output.append(user.to_json())return jsonify(users_output) 五、统一过滤器
在app.py文件加入前置过滤器
# 引用配置文件
import config# 全局拦截器校验token
app.before_request
def before():key str(request.headers.get(TOKEN))if key ! format(config.key_access):return Password errorelse:pass
配置文件包括
# 加载密钥
key_access ^_^protect*py_^_^
此时通过postman访问接口会对header进行请求头校验不满足请求直接被打回 直接当携带了TOKENxxxx才可以正常访问该接口
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912501.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!