当前位置: 首页 > news >正文

Python操作MySQL入门教程,使用pymysql操作MySQL,有录播直播私教课

创建数据库

create database gx character set utf8mb4;

连接数据库

#!/usr/bin/python3import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()print("Database version : %s " % data)# 关闭数据库连接
db.close()

创建数据库表

#!/usr/bin/python3import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("drop table if exists user")# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"cursor.execute(sql)# 关闭数据库连接
db.close()

新增数据

基本用法

#!/usr/bin/python3import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("drop table if exists user")# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 如果发生错误则回滚db.rollback()# 使用预处理语句创建表
sql = "insert into user(name,age) values(%s,%s)"
args = ["张三", 23]
try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()
except:# 如果发生错误则回滚db.rollback()# 关闭数据库连接
db.close()

封装execute方法

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 使用预处理语句创建表
sql = "insert into user(name,age) values(%s,%s)"
args = ["张三", 23]
execute(db, sql, args)# 关闭数据库连接
db.close()

批量新增

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 使用预处理语句创建表
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 关闭数据库连接
db.close()

查询数据

查询单条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 使用预处理语句创建表
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 查询
sql = "select * from user where id = %s"
args = [1]
print(fetchone(db, sql, args))# 关闭数据库连接
db.close()

查询多条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 使用预处理语句创建表
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

更新数据

更新单条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 更新
sql = "update user set name=%s where id = %s"
args = ["张三333", 1]
execute(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

更新多条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 更新
sql = "update user set age=%s where id > %s"
args = [34, 1]
execute(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

删除数据

删除单条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 删除
sql = "delete from user where id = %s"
args = [1]
execute(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

删除多条数据

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 删除
sql = "delete from user where id > %s"
args = [1]
execute(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

in查询

初步实现

这种方案,有比较严重的注入的风险。

import mysql as pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchmany(db, sql, args=None):if type(args) is not list:return# select * from user where id in (1,2,3)in_arg = ",".join([str(i) for i in args])print("in查询SQL:", sql)print("in查询参数:", in_arg)sql = sql % (in_arg,)print("in查询最终SQL:", sql)cursor = db.cursor()cursor.execute(sql)return cursor.fetchall()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 根据id列表查询
sql = "select * from user where id in (%s)"
args = [1, 2, 4]
print(fetchmany(db, sql, args))# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

安全性优化

核心代码:

def is_safe_id(id):"""校验是否为安全的ID"""return re.match(r"^\w+$", str(id)) is not Nonedef fetchin(db, sql, args=None):if type(args) is not list:return# select * from user where id in (1,2,3)in_arg = ",".join([str(i) for i in args if is_safe_id(i)])print("in查询SQL:", sql)print("in查询参数:", in_arg)sql = sql % (in_arg,)print("in查询最终SQL:", sql)cursor = db.cursor()cursor.execute(sql)return cursor.fetchall()

完整代码:

import mysql as pymysql
import re# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def is_safe_id(id):"""校验是否为安全的ID"""return re.match(r"^\w+$", str(id)) is not Nonedef fetchin(db, sql, args=None):if type(args) is not list:return# select * from user where id in (1,2,3)in_arg = ",".join([str(i) for i in args if is_safe_id(i)])print("in查询SQL:", sql)print("in查询参数:", in_arg)sql = sql % (in_arg,)print("in查询最终SQL:", sql)cursor = db.cursor()cursor.execute(sql)return cursor.fetchall()# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 根据id列表查询
sql = "select * from user where id in (%s)"
args = [1, 2, 4]
print(fetchin(db, sql, args))# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

根据ID列表删除

import mysql as pymysql
import re# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:return# 使用 cursor() 方法创建一个游标对象 cursorcursor = db.cursor()try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def is_safe_id(id):"""校验是否为安全的ID"""return re.match(r"^\w+$", str(id)) is not Nonedef fetchin(db, sql, args=None):if type(args) is not list:return# select * from user where id in (1,2,3)in_arg = ",".join([str(i) for i in args if is_safe_id(i)])print("in查询SQL:", sql)print("in查询参数:", in_arg)sql = sql % (in_arg,)print("in查询最终SQL:", sql)cursor = db.cursor()cursor.execute(sql)return cursor.fetchall()def deletein(db, sql, args=None):if type(args) is not list:returnin_arg = ",".join([str(i) for i in args if is_safe_id(i)])sql = sql % (in_arg,)cursor = db.cursor()cursor.execute(sql)# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 根据id列表删除
sql = "delete from user where id in  (%s)"
args = [1, 2, 4]
deletein(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

使用with上下文执行SQL

import mysql as pymysql
import re# 打开数据库连接
db = pymysql.connect(host='localhost',port=3306,user='root',password='zhangdapeng520',database='gx')def execute(db, sql, args=None):# 使用 cursor() 方法创建一个游标对象 cursorwith db.cursor() as cursor:try:# 执行sql语句cursor.execute(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def fetchone(db, sql, args=None):with db.cursor() as cursor:cursor.execute(sql, args)return cursor.fetchone()def fetchall(db, sql, args=None):with db.cursor() as cursor:cursor = db.cursor()cursor.execute(sql, args)return cursor.fetchall()def executemany(db, sql, args=None):if type(args) is not list:returnwith db.cursor() as cursor:try:# 执行sql语句cursor.executemany(sql, args)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()def is_safe_id(id):"""校验是否为安全的ID"""return re.match(r"^\w+$", str(id)) is not Nonedef fetchin(db, sql, args=None):if type(args) is not list:return# select * from user where id in (1,2,3)in_arg = ",".join([str(i) for i in args if is_safe_id(i)])print("in查询SQL:", sql)print("in查询参数:", in_arg)sql = sql % (in_arg,)print("in查询最终SQL:", sql)cursor = db.cursor()cursor.execute(sql)return cursor.fetchall()def deletein(db, sql, args=None):if type(args) is not list:returnin_arg = ",".join([str(i) for i in args if is_safe_id(i)])sql = sql % (in_arg,)cursor = db.cursor()cursor.execute(sql)# 使用 execute() 方法执行 SQL,如果表存在则删除
sql = "drop table if exists user"
execute(db, sql)# 使用预处理语句创建表
sql = "create table user(id int primary key auto_increment, name varchar(36), age int)"
execute(db, sql)# 批量新增
sql = "insert into user(name,age) values(%s,%s)"
args = [("张三1", 23),("张三2", 33),("张三3", 24),
]
executemany(db, sql, args)# 根据id列表删除
sql = "delete from user where id in  (%s)"
args = [1, 2, 4]
deletein(db, sql, args)# 查询
sql = "select * from user"
print(fetchall(db, sql))# 关闭数据库连接
db.close()

相关文章:

Python操作MySQL入门教程,使用pymysql操作MySQL,有录播直播私教课

创建数据库 create database gx character set utf8mb4;连接数据库 #!/usr/bin/python3import mysql as pymysql# 打开数据库连接 db pymysql.connect(hostlocalhost,port3306,userroot,passwordzhangdapeng520,databasegx)# 使用 cursor() 方法创建一个游标对象 cursor cur…...

面试 React 框架八股文十问十答第七期

面试 React 框架八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)React 废弃了哪些生命…...

Docker教程

docker 安装 官方文档 wget -qO- https://get.docker.com/ | sh sudo usermod -aG docker your-user sudo usermod -aG docker ${USER} newgrp docker # 更新docker用户组 cat /etc/group | grep docker docker --version 使用非root用户管理 帮助启动类 命令 system…...

数据结构:二叉树

数据结构:二叉树 文章目录 数据结构:二叉树1.一些特殊的二叉树1.满二叉树2.完全二叉树 2.手动创建一颗二叉树3.二叉树深度优先遍历4.二叉树层序遍历5.二叉树基础操作1.创建二叉树2.二叉树节点个数3.二叉树叶子节点个数4.二叉树的高度5.二叉树第k层节点个…...

HTTP超文本传输协议

原文链接: 1.5 万字 40 张图解 HTTP 常见面试题(值得收藏)_图解http 小林-CSDN博客https://blog.csdn.net/qq_34827674/article/details/124089736?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170521531616777224478386%252…...

视频SDK的技术架构优势和价值

为了满足企业对于高质量视频的需求,美摄科技推出了一款强大的视频SDK(软件开发工具包),旨在帮助企业轻松实现高效、稳定的视频功能,提升用户体验,增强企业竞争力。 一、美摄视频SDK的技术实现方式 美摄视…...

Invalid bound statement (not found)(xml文件创建问题)

目录 解决方法: 这边大致讲一下我的经历,不想看的直接点目录去解决方法 今天照着老师视频学习,中间老师在使用动态SQL时,直接复制了一份,我想这么简单的一个,我直接从网上找内容创建一个好了,…...

正则表达式2 常见模式

继上次的正则表达式速攻1/2-CSDN博客 还有一些常见的匹配模式可以直接使用 电子邮箱 xxxxxx.域名 的情况 \b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\bhttp或者https网址 的情况 http[s]?://(?:[a-zA-Z]|[0-9]|[$-_.&]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F…...

前端对接电子秤、扫码枪设备serialPort 串口使用教程

因为最近工作项目中用到了电子秤,需要对接电子秤设备。以前也没有对接过这种设备,当时也是一脸懵逼,脑袋空空。后来就去网上搜了一下前端怎么对接,然后就发现了SerialPort串口。 Serialport 官网地址:https://serialpo…...

LeeCode前端算法基础100题(18)整数转罗马数字

一、问题详情: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1…...

【C++ 程序设计入门基础】- 第4节-函数

1、函数 函数是对实现某一功能的代码的模块化封装。 函数的定义&#xff1a; 标准函数&#xff1a; 输入 n 对整数的 a、b &#xff0c;输出它们的和。 #include <iostream> #include <windows.h> using namespace std;int add(int a,int b);//函数原型声明int…...

华为数通HCIA题库(750题)

完整题库在这里&#xff1a;华为数通HCIA-RS题库注释版-加水印.pdf资源-CSDN文库 此处只节选几题。 1.网络管理员在网络中捕获到了一个数据帧&#xff0c;其目的MAC地址是01-00-5E-AO-B1-C3。关于该MAC地址的说法正确的是&#xff08; )。 A.它是一个单播MAC地址 B.它是一个广播…...

SpringIOC之support模块GenericXmlApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

CCF认证+蓝桥杯习题训练

贪心 *上取整公式* *代码展示* #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 1e5 10;typedef long long LL;int v[N] , a[N];int main() {int n , d;cin >> n >> d;for(int i 1 ; i < n…...

vue前端开发自学基础,动态切换组件的显示

vue前端开发自学基础,动态切换组件的显示&#xff01;这个是需要借助于&#xff0c;一个官方提供的标签&#xff0c;名字叫【Component】-[代码demo:<component :is"ComponetShow"></component>]。 下面看看代码详情。 <template><h3>动态…...

16.桥接模式

桥接模式 介绍 桥接模式是一种结构型设计模式&#xff0c;它通过将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。这种模式通过组合的方式来实现&#xff0c;而不是继承。桥接模式通过将抽象和实现解耦&#xff0c;从而实现抽象和实现的分离&#xff0c;使得系统更加…...

【网络安全】【密码学】【北京航空航天大学】实验一、数论基础(上)【C语言和Java实现】

实验一、数论基础&#xff08;上&#xff09; 一、实验目的 1、通过本次实验&#xff0c;熟悉相关的编程环境&#xff0c;为后续的实验做好铺垫&#xff1b; 2、回顾数论学科中的重要基本算法&#xff0c;并加深对其的理解&#xff0c;为本学期密码学理论及实验课程打下良好…...

Go语言的sync.Pool如何使用?使用场景具体有哪些?

sync.Pool 是 Go 标准库中提供的一个对象池&#xff08;Object Pool&#xff09;的实现。对象池是一种用于缓存和复用对象的机制&#xff0c;可以在一定程度上减轻内存分配的开销。sync.Pool 专门用于管理临时对象&#xff0c;适用于一些需要频繁创建和销毁的短暂对象&#xff…...

MySQL单表查询练习题

一、创建表的素材 表名&#xff1a;worker——表中字段均为中文&#xff0c;比如&#xff1a;部门号、工资、职工号、参加工作等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 …...

Spring MVC中@Controller和@RestController的区别

Controller 和 RestController 是 Spring MVC 中用于处理 HTTP 请求的注解&#xff0c;它们有以下区别&#xff1a; 返回值处理方式&#xff1a; Controller 用于定义一个传统的 Spring MVC 控制器&#xff0c;它的方法通常返回视图名称或 ModelAndView 对象&#xff0c;由视图…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...