郑州做网站公司有哪些/搜索引擎网站大全
Flask-SQLAlchemy
MySQL是免费开源软件,大家可以自行搜索其官网(https://www.MySQL.com/downloads/)
测试MySQL是否安装成功
在所有程序中,找到MySQL→MySQL Server 5.6下面的命令行工具,然后单击输入密码后回车,就可以知道MySQL数据库是否链接成功。
右击桌面上的“计算机”,在弹出的快捷键菜单中选择“属性”|“高级系统设置”|“环境变量”,在path里面添加MySQL bin目录的路径。选择环境变量,在环境变量中的path路径下输入你的MySQL路径就行了。默认安装的路径是C:\MySQL\MySQL Server 5.6\bin
安装flask-sqlalchemy,安装不了就更换豆瓣源
1 |
|
对象-关系映射实质
class Lib_card(db.Model):__tablename__ = 'lib_card'id = db.Column(db.Integer, primary_key=True, comment='id号')card_id = db.Column(db.Integer, nullable=False, comment = '借书证')book_id = db.Column(db.Integer, db.ForeignKey('book.id'))books = db.relationship('Book', backref=db.backref('cards'),uselist=False)
在Flask-SQLAlchemy中,插入、修改、删除操作均由数据库会话管理
需要一个配置config.py
USERNAME= 'root' #设置登录账号 PASSWORD= '930103' #设置登录密码 HOST= '127.0.0.1' #设置主机地址 PORT= '3306' #设置端口号 DATABASE= 'demo1' #设置访问的数据库 SQLALCHEMY_DATABASE_URI= f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}'#创建数据库连接示例 #动态追踪修改设置,如未设置只会提示警告 SQLALCHEMY_TRACK_MODIFICATIONS=False #查询时会显示原始SQL语句 SQLALCHEMY_ECHO= True
实例
from datetime import datetimefrom flask import Flask #导入Flask模块 from flask_sqlalchemy import SQLAlchemy #导入SQLAlchemy模块 import config #导入配置文件 app= Flask(__name__) #Flask初始化 app.config.from_object(config) #配置文件实例化 #初始化一个对象 db=SQLAlchemy(app)class Book(db.Model):__tablename__ = 'book'id = db.Column(db.Integer, primary_key = True,comment='id号')title = db.Column(db.String(50), nullable=False,comment='书名')publishing_office = db.Column(db.String(100), nullable=False,comment='出版社')isbn = db.Column(db.String(100), nullable=False, comment='isbn号')storage_time = db.Column(db.DateTime, default=datetime.now(), comment='入库时间')class Lib_card(db.Model):__tablename__ = 'lib_card'id = db.Column(db.Integer, primary_key=True, comment='id号')card_id = db.Column(db.Integer, nullable=False, comment = '借书证')book_id = db.Column(db.Integer, db.ForeignKey('book.id'))books = db.relationship('Book', backref=db.backref('cards'),uselist=False)with app.app_context(): #测试数据库连接是否成功db.create_all() #创建数据库# book1= Book(id=9,title='智能导论', publishing_office='高等教育出版社',isbn='9787040479844')# db.session.add(book1)# db.session.commit()# result = Book.query.filter(Book.id == 9).first()# print(result.title)# agine = Book.query.filter(Book.title == result.title).all()# for i in agine:# print(i.id)# db.session.delete(result)# db.session.commit()# card1=Lib_card(card_id='18001', book_id='8')# card2=Lib_card(card_id='18002', book_id='8')# db.session.add(card1)# db.session.add(card2)# db.session.commit()book_query = Book.query.filter(Book.id == 9).first()lib_card_query = book_query.cardsfor i in lib_card_query:print(i.card_id)@app.route('/') def index():return 'index'# if __name__== '__main__': # app.run(debug=True)
注意:一个表(模型)的定义必须要定义一个主键,这个主键一般为id。在定义了Lib_card类后,申明了一个外键,并且在relationship方法中使用uselist=False来约束其关系。book_id =db.Column(db.Integer,db.ForeignKey('book.id'))表示创建一个外键,类型要跟主表一样,通过db.ForeignKey("user.id")与主表绑定books =db.relationship('Book',backref=db.backref('cards');uselist=False)表示Book可以根据Lib_card中的借书证查找到book表中的信息,backref="cards"表示book表可以直接通过cards查找到该书下的借书证号码。
框架实例
建一个apps文件夹,添加一个admin包,admin包下创建三个py文件
#__init__.py #预加载模块内容 #其他地方调用的时候 可以直接from apps.admin import bp as admin_bp不用找到views from .views import bp
#forms.py from flask_wtf import FlaskForm from wtforms import * from wtforms.validators import *class NameForm(FlaskForm):username = StringField('用户名',validators=[DataRequired()])password = PasswordField('密码',validators=[DataRequired()])submit = SubmitField('提交')
#models.py from exts import dbclass User(db.Model):__tablename__ = 'jq_user'uid = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(50), nullable=False, comment="用户名")password = db.Column(db.String(100), nullable=False,comment="密码")email = db.Column(db.String(50), nullable=False, unique=True, comment = "邮箱")
#views.py from flask import Blueprint, request, flash, render_template from apps.admin.forms import NameForm from apps.admin.models import Userbp = Blueprint("admin",__name__)@bp.route("/admin",methods=['GET','POST']) def index():form = NameForm()if request.method == 'POST':if form.validate_on_submit():username = request.form.get('username')password = request.form.get('password')result = User.query.filter(User.username==username).first()if result and password == result.password:flash('登录成功')else:return render_template('login.html', form=form, errormsg="登陆失败")return render_template('login.html', form=form)
建一个文件夹templates,专门放login.html文件,通过render_template调用
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><h1>用户注册登录</h1><form method="post" action="/test/admin">{{ form.csrf_token()}}{{ form.username.label }}{{ form.username}}{{ form.password.label }}{{ form.password}}{{ form.submit }}{{errormsg}}{% for message in get_flashed_messages() %}{{ message }}{% endfor %}</form> </head> <body></body> </html>
建一个app.py
from flask import Flask from apps.admin import bp as admin_bp from exts import db from apps.common import bp as common_bp from apps.front import bp as front_bp from apps.admin.models import User from apps.common.models import Bookdef create_app():app = Flask(__name__)app.secret_key = '123321'#注册蓝图,注册时候可以设置前缀app.register_blueprint(admin_bp,url_prefix="/test")app.register_blueprint(common_bp)app.register_blueprint(front_bp)app.config.from_object('config')# db.app = appdb.init_app(app)return appif __name__ == '__main__':app = create_app()with app.app_context():db.create_all()app.run(host="127.0.0.1",port=1314,debug=True)
建一个config.py
DEBUG=True USERNAME= 'root' #设置登录账号 PASSWORD= '930103' #设置登录密码 HOST= '127.0.0.1' #设置主机地址 PORT= '3306' #设置端口号 DATABASE= 'demo1' #设置访问的数据库 SQLALCHEMY_DATABASE_URI= f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}'#创建数据库连接示例 #动态追踪修改设置,如未设置只会提示警告 SQLALCHEMY_TRACK_MODIFICATIONS=False #查询时会显示原始SQL语句 SQLALCHEMY_ECHO= True
建一个exts.py
#encoding:utf-8 from flask_sqlalchemy import SQLAlchemy db=SQLAlchemy()
相关文章:

轻量级Web框架Flask
Flask-SQLAlchemy MySQL是免费开源软件,大家可以自行搜索其官网(https://www.MySQL.com/downloads/) 测试MySQL是否安装成功 在所有程序中,找到MySQL→MySQL Server 5.6下面的命令行工具,然后单击输入密码后回车&am…...

【gridsample】地平线如何支持gridsample算子
文章目录 1. grid_sample算子功能解析1.1 理论介绍1.2 代码分析1.2.1 x,y取值范围[-1,1]1.2.2 x,y取值范围超出[-1,1] 2. 使用grid_sample算子构建一个网络3. 走PTQ进行模型转换与编译 实操以J5 OE1.1.60对应的docker为例 1. grid_sample算子功能解析 该段主要参考:…...

JPA实现存储实体类型信息
本文已收录于专栏 《Java》 目录 背景介绍概念说明DiscriminatorValue 注解:DiscriminatorColumn 注解:Inheritance(strategy InheritanceType.SINGLE_TABLE) 注解: 实现方式父类子类执行效果 总结提升 背景介绍 在我们项目开发的过程中经常…...

阿里云快速部署开发环境 (Apache + Mysql8.0+Redis7.0.x)
本文章的内容截取于云服务器管理控制台提供的安装步骤,再整合前人思路而成,文章末端会提供原文连接 ApacheMysql 8.0部署MySQL数据库(Linux)步骤一:安装MySQL步骤二:配置MySQL步骤三:远程访问My…...

语音秘书:让录音转文字识别软件成为你的智能工作助手
每当在需要写文章的深夜,我的思绪经常跟不上我的笔,即便是说出来用录音机录下,再书写出来,也需要耗费大量时间。这个困扰了我很久的问题终于有了解决的办法,那就是录音转文字软件。它像个语言魔术师,将我所…...

【腾讯云 Cloud Studio 实战训练营】用于编写、运行和调试代码的云 IDE泰裤辣
文章目录 一、引言✉️二、什么是腾讯云 Cloud Studio🔍三、Cloud Studio优点和功能🌈四、Cloud Studio初体验(注册篇)🎆五、Cloud Studio实战演练(实战篇)🔬1. 初始化工作空间2. 安…...

[C#] 简单的俄罗斯方块实现
一个控制台俄罗斯方块游戏的简单实现. 已在 github.com/SlimeNull/Tetris 开源. 思路 很简单, 一个二维数组存储当前游戏的方块地图, 用 bool 即可, true 表示当前块被填充, false 表示没有. 然后, 抽一个 “形状” 类, 形状表示当前玩家正在操作的一个形状, 例如方块, 直线…...

postman官网下载安装登录详细教程
目录 一、介绍 二、官网下载 三、安装 四、注册登录postman账号(不注册也可以) postman注册登录和不注册登录的使用区别 五、关于汉化的说明 一、介绍 简单来说:是一款前后端都用来测试接口的工具。 展开来说:Postman 是一个…...

(贪心) 剑指 Offer 14- I. 剪绳子 ——【Leetcode每日一题】
❓剑指 Offer 14- I. 剪绳子 难度:中等 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n > 1 并且 m > 1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m…...

如何将Linux上的cpolar内网穿透设置成 - > 开机自启动
如何将Linux上的cpolar内网穿透设置成 - > 开机自启动 文章目录 如何将Linux上的cpolar内网穿透设置成 - > 开机自启动前言一、进入命令行模式二、输入token码三、输入内网穿透命令 前言 我们将cpolar安装到了Ubuntu系统上,并通过web-UI界面对cpolar的功能有…...

50.两数之和(力扣)
目录 问题描述 核心代码解决 代码思想 时间复杂度和空间复杂度 问题描述 给定一个整数数组 和一个整数目标值 ,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。numstarget 你可以假设每种输入只会对应一个答案。但是&am…...

k8s基础
k8s基础 文章目录 k8s基础一、k8s组件二、k8s组件作用1.master节点2.worker node节点 三、K8S创建Pod的工作流程?四、K8S资源对象1.Pod2.Pod控制器3.service && ingress 五、K8S资源配置信息六、K8s部署1.K8S二进制部署2.K8S kubeadm搭建 七、K8s网络八、K8…...

【自然语言处理】大模型高效微调:PEFT 使用案例
文章目录 一、PEFT介绍二、PEFT 使用2.1 PeftConfig2.2 PeftModel2.3 保存和加载模型 三、PEFT支持任务3.1 Models support matrix3.1.1 Causal Language Modeling3.1.2 Conditional Generation3.1.3 Sequence Classification3.1.4 Token Classification3.1.5 Text-to-Image Ge…...

FFmpeg将编码后数据保存成mp4
以下测试代码实现的功能是:持续从内存块中获取原始数据,然后依次进行解码、编码、最后保存成mp4视频文件。 可保存成单个视频文件,也可指定每个视频文件的总帧数,保存多个视频文件。 为了便于查看和修改,这里将可独立的…...

设置VsCode 将打开的多个文件分行(栏)排列,实现全部显示
目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能,如下为Visual Studio 2022的该功能界面: 图 1 图 2 当在Visual Studio 2022打开很多文件时,可以按照图1、图2所示找到自…...

Vue.js2+Cesium1.103.0 六、标绘与测量
Vue.js2Cesium1.103.0 六、标绘与测量 点,线,面的绘制,可实时编辑图形,点击折线或多边形边的中心点,可进行添加线段移动顶点位置等操作,并同时计算出点的经纬度,折线的距离和多边形的面积。 De…...

【redis 延时队列】使用go-redis的list做异步,生产消费者模式
分享一个用到的,使用go-redis的list做异步,生产消费者模式,接着再用 go 协程去检测队列里是否有东西去消费 如果队列为空,就会一直pop,空轮询导致 cpu 资源浪费和redis qps无效升高,所以可以通过 time.Sec…...

激光焊接塑料多点测试全画面穿透率测试仪
工程塑料由于其具有高比强度、电绝缘性、耐磨性、耐腐蚀性等优点,已广泛应用于各个重要领域。另一方面,工程塑料还具有良好的焊接性,是制成复合材料的基体材料的优良选择,因此目前已成为国内外新型复合材料的研究热点。 工程塑料…...

用 Uno 当烧录器给 atmega328 烧录 bootloader
用 Uno 当烧录器给 atmega328 烧录 bootloader date: 2023-8-10 https://backmountaindevil.github.io/#/hackaday/arduino/isp 引脚接线 把两个板子的 11(MOSI)、12(MISO)、13(SCK)、5V、GND 两两相连,还要把 Uno(烧录器)的 10 接到atmeg…...

spring boot策略模式实用: 告警模块为例
spring boot策略模式实用: 告警模块 0 涉及知识点 策略模式, 模板方法, 代理, 多态, 反射 1 需求概括 场景: 每隔一段时间, 会获取设备运行数据, 如通过温湿度计获取到当前环境温湿度;需求: 对获取回来的进行分析, 超过配置的阈值需要产生对应的告警 2 方案设计 告警的类…...

Camunda 7.x 系列【10】使用 Rest API 运行流程实例
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 官方接口文档3. 本地接口文档3.1 Postman3.2 Camunda Platform Run Swagger3.3 S…...

Python-OpenCV中的图像处理-边缘检测
Python-OpenCV中的图像处理-边缘检测 边缘检测Canny算子 边缘检测Canny算子 Canny 边缘检测是一种非常流行的边缘检测算法,是 John F.Canny 在 1986 年提出的。它是一个有很多步构成的算法:噪声去除、计算图像梯度、非极大值抑制、滞后阀值等。 Canny(i…...

一文了解Java序列化和反序列化:对象的存储与传输
一文了解Java序列化和反序列化:对象的存储与传输 作者:Stevedash 发布时间:2023年8月9日 21点30分 前言 Java序列化是一项强大而重要的技术,它允许我们将对象转换为字节流,以便在存储、传输和重建时使用。在本文中&…...

react-codemirror2 编辑器需点击一下或者延时才显示数据的问题
现象: <Codemirror/>组件的数据已经赋上值的情况下,初始状态不渲染数据,需要点击编辑框获取焦点后才展示,或者延迟了几秒才显示出来。 原因: 指定了一些依赖的版本,可能不兼容了一些功能,…...

火山引擎联合Forrester发布《中国云原生安全市场现状及趋势白皮书》,赋能企业构建云原生安全体系
国际权威研究咨询公司Forrester 预测,2023年全球超过40%的企业将会采用云原生优先战略。然而,云原生在改变企业上云及构建新一代基础设施的同时,也带来了一系列的新问题,针对涵盖云原生应用、容器、镜像、编排系统平台以及基础设施…...

需要数电发票接口的,先熟悉下数电发票基本常识
最近有一些技术小伙伴来咨询数电发票接口的时候,对数电发票的一些常识不太了解, 导致沟通起来比较困难。比较典型的这三个问题: 一、开具数电票时,如何设置身份认证频次? 请公司的法定代表人或财务负责人登录江苏省电…...

node-sass是什么
一、Sass(Syntactically Awesome Style Sheets) 是一种CSS预处理器,它扩展了CSS的功能并提供了更强大的样式表语言。Sass允许开发人员使用变量、嵌套规则、混合(Mixins)、继承等高级功能来编写更简洁、可维护的样式代…...

C语言指针之 进阶
前言 今天来较为深入的介绍一下指针,希望大家能有所收获~ 那么,先进行一些简单的基础知识复习吧。 字符指针 格式:char * 补充: 表达式“abcdef”的值是首字符a的地址 所以当像下面这么使用时,它的含…...

C++单例模式
文章目录 1、什么是单例2、一个好的单例应该具备的条件3、懒汉模式与饿汉模式4、单例实现:线程安全、内存安全的懒汉式单例(基于C11的智能指针和互斥锁) 1、什么是单例 单例 Singleton 是设计模式的一种,其特点是只提供唯一一个类…...

C++ 析构函数
析构函数 析构函数于构造函数相对应,构造函数是对象创建的时候自动调用的,而析构函数就是对象在销毁的时候自动调用的 特点: 1)构造函数可以有多个来构成重载,但析构函数只能有一个,不能构成重载 2&…...