当前位置: 首页 > 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;由视图…...

OpenClaw API配置失败?3步快速修复,免费额度高效利用

OpenClaw API配置失败&#xff1f;3步快速修复&#xff0c;免费额度高效利用引言 OpenClaw作为新一代数据采集平台&#xff0c;其API凭借高效稳定的特性已成为开发者首选的工具之一。但在实际接入过程中&#xff0c;配置失败问题频发&#xff0c;尤其对免费额度用户造成严重困扰…...

[LangChain智能体本质论-01]两种视角看待Agent和ReAct循环

作为LangChain智能体的Agent采用一种被称为ReAct循环的执行流程&#xff08;如下图所示&#xff09;&#xff0c;这是一种结合了“推理”&#xff08;Reasoning&#xff09;与“行动”&#xff08;Acting&#xff09;的交互模式&#xff0c;旨在让Agent能像人类一样通过逻辑思考…...

Phi-4-mini-reasoning效果展示:含单位换算、科学计数法的复合型数学题求解

Phi-4-mini-reasoning效果展示&#xff1a;含单位换算、科学计数法的复合型数学题求解 1. 模型能力概览 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型&#xff0c;特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同&#xff0c;它更专注于"问题输入→…...

DDA直线插补算法在MATLAB中的优化实现与性能分析

1. DDA直线插补算法基础与MATLAB实现 DDA&#xff08;Digital Differential Analyzer&#xff09;算法是计算机图形学中最基础的直线生成算法之一&#xff0c;它的核心思想是利用直线的微分方程来递推计算像素点位置。我第一次接触这个算法是在大学计算机图形学课程上&#xff…...

MAVLink垂直扩展:Emaxx导航板专用协议库设计与实践

1. 项目概述 mavlink_emaxx 是一个面向 Emaxx 导航板&#xff08;Emaxx Nav Board&#xff09;定制的 MAVLink 协议消息扩展库。该库并非独立协议栈&#xff0c;而是基于标准 MAVLink v2 协议规范构建的一组专用消息定义&#xff08;message definitions&#xff09;与配套 C…...

SpringBoot项目实战:用Java海康SDK搞定摄像头录像与门禁人脸下发(附完整代码)

SpringBoot企业级实战&#xff1a;海康威视SDK深度集成与智能安防系统开发 1. 企业级安防系统架构设计 在智能园区和现代化办公环境中&#xff0c;视频监控与门禁管理的无缝集成已成为刚需。海康威视作为全球领先的安防解决方案提供商&#xff0c;其设备SDK的深度集成能够为Jav…...

天问Block环境下ASRPRO语音芯片实战:语音交互、GPIO控制与PWM调光开发指南

1. 天问Block与ASRPRO芯片开发入门 第一次接触天问Block和ASRPRO语音芯片时&#xff0c;我被它们的组合惊艳到了。这个开发环境就像乐高积木一样&#xff0c;通过拖拽代码块就能完成复杂的功能开发&#xff0c;特别适合像我这样的硬件爱好者。ASRPRO作为一款专为语音交互设计的…...

Stable-Diffusion-v1-5-archive多风格生成效果:复古海报/科技感UI/手绘插画实拍

Stable Diffusion v1.5 Archive多风格生成效果&#xff1a;复古海报/科技感UI/手绘插画实拍 1. 模型介绍与核心能力 Stable Diffusion v1.5 Archive是经典SD1.5文生图模型的归档版本&#xff0c;作为AI图像生成领域的"常青树"&#xff0c;它依然保持着强大的通用图…...

Windows系统优化工具WinUtil:从新手到专家的完整使用指南

Windows系统优化工具WinUtil&#xff1a;从新手到专家的完整使用指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌倦了Windows系统…...

【可分离架构物理信息神经网络:破解维度灾难的分离变量方法论】第2章 SPINN:可分离物理信息神经网络架构

目录 (Chapter 2: SPINN: Separable Physics-Informed Neural Networks) 2.1 SPINN的架构设计原理 2.1.1 按坐标轴的体网络(Body Networks)设计 2.1.2 特征融合机制与参数效率 2.2 前向模式自动微分与计算优化 2.2.1 前向自动微分在分离架构中的优势 2.2.2 超大规模配…...