37创客科创中心

 找回密码
 立即注册
查看: 1978|回复: 1

微信db

[复制链接]

194

主题

324

帖子

2401

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2401
发表于 2024-2-5 23:00:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
wxconfig.py
  1. # 导入库文件:flask,flask_bootstrap,flask_wtf,flask_sqlalchemy
  2. from flask import Flask, render_template, request, flash, redirect, url_for, jsonify
  3. from flask_bootstrap import Bootstrap5, SwitchField
  4. # from flask_wtf import FlaskForm, CSRFProtect
  5. from wtforms.validators import DataRequired, Length, Regexp
  6. from wtforms.fields import *
  7. from flask_sqlalchemy import SQLAlchemy
  8. # 自定义库文件
  9. # from uiform import *

  10. # 实例化Flask
  11. app = Flask(__name__, template_folder='aiuser')

  12. # 设置数据库配置参数
  13. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  14. # 设置为sqlite数据库  sqlite:///bootstrap-flask.db
  15. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///wtdb.db'
  16. # memory为内存数据库
  17. # app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
  18. # 数据库对象应用实例化
  19. db = SQLAlchemy(app)

  20. # json中文乱码
  21. app.config["JSON_AS_ASCII"] = False
  22. # 设置安全访问密钥
  23. app.secret_key = '37ck2023dev'

  24. # 设置按钮默认样式和尺寸参数
  25. app.config['BOOTSTRAP_BTN_STYLE'] = 'primary'
  26. app.config['BOOTSTRAP_BTN_SIZE'] = 'sm'
  27. # 设置表格操作按钮
  28. app.config['BOOTSTRAP_TABLE_VIEW_TITLE'] = 'Read读取'
  29. app.config['BOOTSTRAP_TABLE_EDIT_TITLE'] = 'Update修改'
  30. app.config['BOOTSTRAP_TABLE_DELETE_TITLE'] = 'Remove删除'
  31. app.config['BOOTSTRAP_TABLE_NEW_TITLE'] = 'Create新建'

  32. # 实例化UI bootstrap5
  33. bootstrap = Bootstrap5(app)
  34. # 跨域访问实例化
  35. # csrf = CSRFProtect(app)
复制代码
回复

使用道具 举报

194

主题

324

帖子

2401

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2401
 楼主| 发表于 2024-2-5 23:02:28 | 显示全部楼层
wxdb.py
  1. # -*- coding: utf-8 -*-
  2. import sqlite3
  3. from json import dump
  4. from flask import redirect, url_for, request, flash, render_template, jsonify
  5. # 自定义库文件
  6. # from uiform import *
  7. from wxconfig import app, db

  8. # 创建一个表单类执行记录
  9. # class JsForm(FlaskForm):
  10. #     id = IntegerField('编号')
  11. #     fid = StringField('识别号')
  12. #     name = StringField('姓名')
  13. #     card = StringField('卡号')
  14. #     s = StringField('学生')
  15. #     t = StringField('老师')
  16. #     h = StringField('家长')
  17. #     log = StringField('备注')
  18. #     submit = SubmitField('保存')

  19. # 行车记录20220816
  20. class js(db.Model):
  21.     id = db.Column(db.Integer, primary_key=True)
  22.     fid = db.Column(db.String(10))
  23.     card = db.Column(db.String(80))
  24.     name = db.Column(db.String(80))
  25.     s = db.Column(db.String(120))
  26.     t = db.Column(db.String(120))
  27.     h = db.Column(db.String(120))
  28.     log = db.Column(db.String(200))


  29. # # 初始化数据库数据========================================================================
  30. # @app.before_first_request
  31. # def before_first_request_func():
  32. #     initdb()
  33. # 初始化数据库
  34. @app.route('/init')
  35. @app.route('/initdb')
  36. def initdb():
  37.     db.drop_all()
  38.     db.create_all()
  39.     for i in range(100):  #
  40.         u = js(
  41.             name=f'37梦想微信公众号 {i + 1}',
  42.             fid=f'{i + 1}',
  43.             card=f'{i + 1}',
  44.             s=f'学生{i + 1}',
  45.             t=f'老师{i + 1}',
  46.             h=f'家长{i + 1}',
  47.             log=f'备注{i + 1}'
  48.         )
  49.         db.session.add(u)
  50.     db.session.commit()
  51.     return "数据库初始化完成"
  52.     # return redirect(url_for("js_index"))


  53. # 数据列表--------------------分页数据--------------------------------------------------
  54. @app.route('/')
  55. def js_index():
  56.     page = request.args.get('page', 1, type=int)
  57.     print(page)
  58.     pagination = js.query.paginate(page=page, per_page=10)
  59.     # pagination = AIRun.query.paginate()
  60.     aiuser = pagination.items
  61.     flash("欢迎来到***37创客教育***开源数据接口界面!")
  62.     titles = [('id', '编号ID'), ('fid', '编号'), ('name', '名字'), ('card', '卡号'), ('s', '学生'), ('t', '老师'),
  63.               ('h', '家长'), ('log', '备注'), ]  # 自定义标题
  64.     # return titles
  65.     return render_template('js_list.html', messages=aiuser, pagination=pagination, titles=titles, Message=js,title='37创客教育:简便数据API平台')


  66. # 路由指向与函数进行绑定处理
  67. # 编辑数据----------------------------------------------------------------------
  68. @app.route('/jsedit/<id>', methods=['GET', 'POST'])
  69. def edit_js(id):
  70.     # 第一步:定义表单和获取数据
  71.     form = JsForm()
  72.     aiuser = js.query.get(id)
  73.     # 第三步:点击保存数据
  74.     if form.validate_on_submit():
  75.         # 获取页面数据到数据对象模型
  76.         aiuser.card = form.card.data
  77.         aiuser.fid = form.fid.data
  78.         aiuser.name = form.name.data
  79.         aiuser.s = form.s.data
  80.         aiuser.t = form.t.data
  81.         aiuser.h = form.h.data
  82.         aiuser.log = form.log.data
  83.         db.session.commit()  # 提交保存数据
  84.         flash("用户信息已经更新!")  # 提示数据操作状态
  85.         return redirect(url_for("js_index"))  # 定向到列表函数页面
  86.     # 第二步:读取数据显示处理
  87.     # 把数据发送到页面表单中
  88.     form.fid.data = aiuser.fid
  89.     form.name.data = aiuser.name
  90.     form.card.data = aiuser.card
  91.     form.log.data = aiuser.log
  92.     form.id.data = aiuser.id
  93.     form.s.data = aiuser.s
  94.     form.t.data = aiuser.t
  95.     form.h.data = aiuser.h
  96.     # 提示操作情况
  97.     flash("用户信息读取完成!")
  98.     # 数据显示页面渲染
  99.     return render_template('js_edit.html', form=form, title='编辑')

  100. # 查看数据----------------------------------------------------------------------
  101. @app.route('/jsview/<id>', methods=['GET', 'POST'])
  102. def view_js(id):
  103.     aiuser = js.query.get(id)
  104.     form = JsForm()
  105.     form.fid.data = aiuser.fid
  106.     form.name.data = aiuser.name
  107.     form.card.data = aiuser.card
  108.     form.log.data = aiuser.log
  109.     form.id.data = aiuser.id
  110.     form.s.data = aiuser.s
  111.     form.t.data = aiuser.t
  112.     form.h.data = aiuser.h
  113.     if form.validate_on_submit():
  114.         return redirect(url_for("js_index"))
  115.     if aiuser:
  116.         return render_template('js_View.html', form=form, message=aiuser)
  117.     return f'没有对应数据 {id} 存在. 返回 <a href="/ai">table</a>.'

  118. # 删除数据----------------------------------------------------------------------
  119. @app.route('/jsdelete/<id>', methods=['GET', 'POST'])
  120. def delete_js(id):
  121.     aiuser = js.query.get(id)
  122.     flash(f'编号:  {id} --{aiuser.name}-----{aiuser.log}-----的用户数据删除完成.')
  123.     if aiuser:
  124.         db.session.delete(aiuser)
  125.         db.session.commit()
  126.         return redirect(url_for("js_index"))
  127.     return f'提示: {id} 数据不存在无法删除. 返回 <a href="/ai">表格</a>.'


  128. # 获取编号数据:返回用户名和邮箱----------------------------------------------------------------------
  129. @app.route('/getjs/<id>', methods=['GET'])
  130. def getjs(id):
  131.     aiuser = js.query.get(id)
  132.     if aiuser:
  133.         return aiuser.name + '-' + aiuser.card + '-' + aiuser.s + '-' + aiuser.t + '-' + aiuser.h + '-' + aiuser.log
  134.     return f'编号:{id} 数据不存在.'


  135. # 获取编号数据:返回用户名和邮箱----------------------------------------------------------------------
  136. @app.route('/cxjs/<id>', methods=['GET'])
  137. def cxjs(id):
  138.     conn = sqlite3.connect('instance/wtdb.db')
  139.     cursor = conn.cursor()
  140.     # cursor.execute("select * from js where  name like ? or fid like ? or card like ?", ('%' + id + '%', '%' + id + '%', '%' + id + '%'))
  141.     cursor.execute("select * from js where  name like ? or fid = ? or card = ?",
  142.                    ('%' + id + '%', id, id))
  143.     res = cursor.fetchall()
  144.     conn.close()
  145.     print(res)
  146.     if res:
  147.         res_list = [{'编号': row[0], '人脸': row[1], '卡号': row[2], '名字': row[3], '学生': row[4], '老师': row[5],
  148.                      '家长': row[6], '备注': row[7]} for row in res]
  149.         return jsonify(res_list)
  150.     return f'编号:{id} 数据不存在.'


  151. # 获取编号数据:返回用户名和邮箱----------------------------------------------------------------------
  152. @app.route('/jsxs/<id>/<n>', methods=['GET'])
  153. def jsxx(id):
  154.     conn = sqlite3.connect('instance/wtdb.db')
  155.     cursor = conn.cursor()
  156.     cursor.execute("select * from js where  name like ? or fid like ? or card like ?",
  157.                    ('%' + id + '%', '%' + id + '%', '%' + id + '%'))
  158.     res = cursor.fetchall()
  159.     conn.close()
  160.     print(res)
  161.     if res:
  162.         res_list = [{'编号': row[0], '人脸': row[1], '卡号': row[2], '名字': row[3], '学生': row[4], '老师': row[5],
  163.                      '家长': row[6], '备注': row[7]} for row in res]
  164.         return jsonify(res_list)
  165.     return f'编号:{id} 数据不存在.'


  166. # 获取编号数据:返回用户名和邮箱----------------------------------------------------------------------
  167. @app.route('/getjsu/<id>/<fh>', methods=['GET'])
  168. def getjsu(id, fh):
  169.     aiuser = js.query.get(id)
  170.     if aiuser:
  171.         return str(aiuser.id) + fh + str(
  172.             aiuser.fid) + fh + aiuser.name + fh + aiuser.card + fh + aiuser.s + fh + aiuser.t + fh + aiuser.h + fh + aiuser.log
  173.     return f'编号:{id} 数据不存在.'


  174. # 删除数据:根据编号删除,返回----------------------------------------------------------------------
  175. @app.route('/deljs/<id>', methods=['GET', 'POST'])
  176. def deljs(id):
  177.     aiuser = js.query.get(id)
  178.     if aiuser:
  179.         db.session.delete(aiuser)
  180.         db.session.commit()
  181.         return f'删除数据编号: {id} 完成'
  182.     return f'编号:{id} 数据不存在.'


  183. # 增加和编辑----------------------------------------------------------------------
  184. @app.route('/aejs/<id>/<name>/<fid>/<card>/<s>/<t>/<h>/<log>')
  185. def aejs(id, name, fid, card, s, t, h, log):
  186.     # 第一步:定义数据模型和获取数据
  187.     aiuser = js.query.get(id)
  188.     # 第三步:点击保存数据
  189.     if aiuser:
  190.         # 获取页面数据到数据对象模型
  191.         aiuser.name = name
  192.         aiuser.fid = fid
  193.         aiuser.card = card
  194.         aiuser.s = s
  195.         aiuser.t = t
  196.         aiuser.h = h
  197.         aiuser.log = log
  198.         db.session.commit()  # 提交保存数据
  199.         return f"{id}数据修改完成"
  200.     else:
  201.         user = js(id=id, name=name, fid=fid, card=card, s=s, t=t, h=h, log=log)
  202.         db.session.add(user)
  203.         db.session.commit()  # 提交保存数据
  204.         return f"{id}数据新增完成!"
  205.     # return f"{id}数据不存在!"


  206. # 增加和编辑----------------------------------------------------------------------
  207. @app.route('/mjs/<id>/<xx>/<name>')
  208. def mjs(id, xx, name):
  209.     # 第一步:定义数据模型和获取数据
  210.     aiuser = js.query.get(id)
  211.     # 第三步:点击保存数据
  212.     if (xx == '编号'):
  213.         aiuser.fid = name
  214.     elif (xx == '名字'):
  215.         aiuser.name = name
  216.     elif (xx == '卡号'):
  217.         aiuser.card = name
  218.     elif (xx == '老师'):
  219.         aiuser.t = name
  220.     elif (xx == '学生'):
  221.         aiuser.s = name
  222.     elif (xx == '家长'):
  223.         aiuser.h = name
  224.     else:
  225.         aiuser.s = name
  226.         aiuser.t = name
  227.         aiuser.h = name
  228.         aiuser.log = name
  229.     db.session.commit()  # 提交保存数据
  230.     return f"{id}数据修改完成"


  231. #
  232. # # 新增数据----------------------------------------------------------------------
  233. # @app.route('/jsnew', methods=['GET', 'POST'])
  234. # def new_js():
  235. #     form = JsForm()
  236. #     # aiuser = js()
  237. #     if form.validate_on_submit():
  238. #         fid = form.fid.data
  239. #         card = form.card.data
  240. #         name = form.name.data
  241. #         s = form.s.data
  242. #         t = form.t.data
  243. #         h = form.h.data
  244. #         log = form.log.data
  245. #         id = form.id.data
  246. #         user = js(id=id, log=log, name=name, card=card, s=s, t=t, h=h)
  247. #         db.session.add(user)
  248. #         db.session.commit()
  249. #         flash("你的信息已经保存!")
  250. #         return redirect(url_for("js_index"))
  251. #     return render_template('js_new.html', form=form, title='新增')
  252. #
  253. #
  254. # # 路由指向与函数进行绑定处理
  255. # # 编辑数据----------------------------------------------------------------------
  256. # @app.route('/jsedit/<id>', methods=['GET', 'POST'])
  257. # def edit_js(id):
  258. #     # 第一步:定义表单和获取数据
  259. #     form = JsForm()
  260. #     aiuser = js.query.get(id)
  261. #     # 第三步:点击保存数据
  262. #     if form.validate_on_submit():
  263. #         # 获取页面数据到数据对象模型
  264. #         aiuser.card = form.card.data
  265. #         aiuser.fid = form.fid.data
  266. #         aiuser.name = form.name.data
  267. #         aiuser.s = form.s.data
  268. #         aiuser.t = form.t.data
  269. #         aiuser.h = form.h.data
  270. #         aiuser.log = form.log.data
  271. #         db.session.commit()  # 提交保存数据
  272. #         flash("用户信息已经更新!")  # 提示数据操作状态
  273. #         return redirect(url_for("js_index"))  # 定向到列表函数页面
  274. #     # 第二步:读取数据显示处理
  275. #     # 把数据发送到页面表单中
  276. #     form.fid.data = aiuser.fid
  277. #     form.name.data = aiuser.name
  278. #     form.card.data = aiuser.card
  279. #     form.log.data = aiuser.log
  280. #     form.id.data = aiuser.id
  281. #     form.s.data = aiuser.s
  282. #     form.t.data = aiuser.t
  283. #     form.h.data = aiuser.h
  284. #     # 提示操作情况
  285. #     flash("用户信息读取完成!")
  286. #     # 数据显示页面渲染
  287. #     return render_template('js_edit.html', form=form, title='编辑')


  288. # 主程序
  289. if __name__ == '__main__':
  290.     app.run(host='0.0.0.0', port=86, debug=True)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|37创客科创中心

GMT+8, 2025-12-11 17:19 , Processed in 0.178557 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表