Python筑基之旅-MySQL数据库(四)
目录
一、数据表操作
1、新增记录
1-1、用mysql-connector-python库
1-2、用PyMySQL库
1-3、用PeeWee库
1-4、用SQLAlchemy库
2、删除记录
2-1、用mysql-connector-python库
2-2、用PyMySQL库
2-3、用PeeWee库
2-4、用SQLAlchemy库
3、修改记录
3-1、用mysql-connector-python库
3-2、用PyMySQL库
3-3、用PeeWee库
3-4、用SQLAlchemy库
4、查询记录
4-1、用mysql-connector-python库
4-2、用PyMySQL库
4-3、用PeeWee库
4-4、用SQLAlchemy库
二、推荐阅读
1、Python函数之旅
2、Python算法之旅
3、博客个人主页



一、数据表操作
在MySQL服务器上已有数据库test_database,且该数据库下已有数据表myelsa_table,此数据表包含4个字段:name,ID_Card,age,city,现借助第三方库对该数据表进行增、删、改、查等操作。
1、新增记录
1-1、用mysql-connector-python库
import mysql.connector
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名
}
# 定义要插入的数据
new_record = {'name': 'Myelsa','ID_Card': '443689564710526448','age': 18,'city': 'Guangzhou'
}
# SQL插入语句
insert_query = """
INSERT INTO myelsa_table (name, ID_Card, age, city)
VALUES (%s, %s, %s, %s)
"""
try:# 连接到数据库cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 执行SQL插入语句cursor.execute(insert_query, (new_record['name'], new_record['ID_Card'], new_record['age'], new_record['city']))# 提交更改cnx.commit()print("Record inserted successfully!")
except mysql.connector.Error as err:print(f"Error: '{err}'")
finally:# 关闭游标和连接if cursor:cursor.close()if cnx.is_connected():cnx.close()
1-2、用PyMySQL库
import pymysql
# 数据库连接配置
config = {'user': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'charset': 'utf8mb4', # 添加字符集配置,防止编码问题'cursorclass': pymysql.cursors.DictCursor # 使用字典游标以便轻松访问列名
}
# 定义要插入的数据
new_record = {'name': 'Myelsa','ID_Card': '443689564710526448','age': 18,'city': 'Guangzhou'
}
# SQL插入语句
insert_query = """
INSERT INTO myelsa_table (name, ID_Card, age, city)
VALUES (%s, %s, %s, %s)
"""
try:# 连接到数据库cnx = pymysql.connect(**config)with cnx.cursor() as cursor:# 使用with语句确保游标在使用完毕后被关闭# 执行SQL插入语句cursor.execute(insert_query, (new_record['name'], new_record['ID_Card'], new_record['age'], new_record['city']))# 提交更改cnx.commit()print("Record inserted successfully!")
except pymysql.Error as err:print(f"Error: '{err}'")
# 使用with语句连接数据库时,在with块结束后连接将自动关闭
# 如果没有使用with语句,需要显式关闭连接
if cnx.open:cnx.close()
1-3、用PeeWee库
from peewee import *
# 数据库连接配置
db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')
# 定义模型
class MyelsaTable(Model):name = CharField()ID_Card = CharField()age = IntegerField()city = CharField()class Meta:database = dbtable_name = 'myelsa_table'
# 连接到数据库
db.connect()
# 创建表(如果尚不存在)
db.create_tables([MyelsaTable])
# 插入数据
new_record = {'name': 'Myelsa','ID_Card': '443689564710526448','age': 18,'city': 'Guangzhou'
}
try:MyelsaTable.create(name=new_record['name'],ID_Card=new_record['ID_Card'],age=new_record['age'],city=new_record['city'])print("Record inserted successfully!")
except IntegrityError as e:print(f"Error: '{e}'")
finally:# 关闭数据库连接db.close()
1-4、用SQLAlchemy库
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import SQLAlchemyError
# 定义基类
Base = declarative_base()
# 定义数据库模型类
class MyElsaTable(Base):__tablename__ = 'myelsa_table'ID_Card = Column(String, primary_key=True)name = Column(String)age = Column(Integer)city = Column(String)def __repr__(self):return f"<MyElsaTable(ID_Card={self.ID_Card}, name={self.name}, age={self.age}, city={self.city})>"
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名
}
# 创建数据库引擎
engine = create_engine(f'mysql+pymysql://{config["username"]}:{config["password"]}@{config["host"]}/{config["database"]}')
# 确保所有表都已创建(可选)
Base.metadata.create_all(engine)
# 创建会话类
Session = sessionmaker(bind=engine)
# 定义要插入的数据
new_record = {'name': 'Myelsa','ID_Card': '443689564710526448','age': 18,'city': 'Guangzhou'
}
try:# 使用上下文管理器自动管理会话with Session() as session:# 创建新的模型实例new_entry = MyElsaTable(**new_record)# 将新实例添加到会话中session.add(new_entry)# 提交更改session.commit()print("Record inserted successfully!")
except SQLAlchemyError as e:print(f"Error: '{e}'")# 在使用上下文管理器时,无需显式回滚,因为上下文管理器会在退出时处理它
2、删除记录
2-1、用mysql-connector-python库
import mysql.connector
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名
}
# 要删除的记录的ID_Card值
id_card_to_delete = '443689564710526448'
# SQL删除语句
delete_query = """
DELETE FROM myelsa_table
WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 执行SQL删除语句cursor.execute(delete_query, (id_card_to_delete,))# 提交更改cnx.commit()print(f"Record with ID_Card '{id_card_to_delete}' deleted successfully!")
except mysql.connector.Error as err:print(f"Error: '{err}'")
finally:# 关闭游标和连接if cursor:cursor.close()if cnx.is_connected():cnx.close()
2-2、用PyMySQL库
import pymysql
# 数据库连接配置
config = {'user': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'charset': 'utf8mb4', # 添加字符集配置,防止编码问题'cursorclass': pymysql.cursors.DictCursor # 使用字典游标(虽然在这个删除操作中不是必需的)
}
# 要删除的记录的ID_Card值
id_card_to_delete = '443689564710526448'
# SQL删除语句
delete_query = """
DELETE FROM myelsa_table
WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = pymysql.connect(**config)with cnx.cursor() as cursor:# 使用with语句确保游标在使用完毕后被关闭# 执行SQL删除语句cursor.execute(delete_query, (id_card_to_delete,))# 提交更改cnx.commit()print(f"Record with ID_Card '{id_card_to_delete}' deleted successfully!")
except pymysql.Error as err:print(f"Error: '{err}'")
# 使用with语句连接数据库时,在with块结束后连接将自动关闭
# 如果没有使用with语句,需要显式关闭连接
if cnx.open:cnx.close()
2-3、用PeeWee库
from peewee import *
# 数据库连接配置
db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')
# 定义模型,映射到myelsa_table表
class Myelsa_Table(Model):name = CharField()ID_Card = CharField(unique=True) # 假设ID_Card是唯一的age = IntegerField()city = CharField()class Meta:database = db
# 连接到数据库
db.connect()
# 要删除的记录的ID_Card值
id_card_to_delete = '443689564710526448'
try:# 使用模型来删除记录query = Myelsa_Table.delete().where(Myelsa_Table.ID_Card == id_card_to_delete)query.execute()print(f"Record with ID_Card '{id_card_to_delete}' deleted successfully!")
except Exception as e:print(f"Error: '{e}'")
finally:# 关闭数据库连接(Peewee会在连接池中管理连接,通常不需要显式关闭)# 但如果你确定不再需要连接,可以调用db.close()# db.close()pass
# 注意:在实际应用中,通常不需要显式关闭连接,因为Peewee会管理连接池
# 但在某些情况下,例如脚本结束时,你可能想要确保所有资源都被释放
2-4、用SQLAlchemy库
from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table
from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import SQLAlchemyError
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'port': 3306, # 如果端口不是默认的3306,请添加此行并替换为正确的端口
}
# 创建数据库引擎
engine = create_engine(f'mysql+pymysql://{config["username"]}:{config["password"]}@{config["host"]}:{config["port"]}/{config["database"]}')
# 要删除的记录的ID_Card值
id_card_to_delete = '443689564710526448'
# 定义元数据(如果使用ORM,则无需此步骤,但这里为简单起见使用Table对象)
metadata = MetaData()
myelsa_table = Table('myelsa_table', metadata, autoload_with=engine)
# 创建会话类
Session = sessionmaker(bind=engine)
try:# 创建会话对象session = Session()# 执行SQL删除语句(这里使用session.execute而不是ORM方法)session.execute(myelsa_table.delete().where(myelsa_table.c.ID_Card == id_card_to_delete))# 提交更改session.commit()print(f"Record with ID_Card '{id_card_to_delete}' deleted successfully!")
except SQLAlchemyError as e:print(f"Error: '{e}'")# 如果出错,回滚更改session.rollback()
finally:# 关闭会话session.close()
3、修改记录
3-1、用mysql-connector-python库
import mysql.connector
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名
}
# 要更新的记录的ID_Card值
id_card_to_update = '443689564710526448'
# 新的记录值
new_values = {'name': 'Jimmy','age': 15,'city': 'Foshan'
}
# SQL更新语句
update_query = """
UPDATE myelsa_table
SET name = %s, age = %s, city = %s
WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 执行SQL更新语句cursor.execute(update_query, (new_values['name'], new_values['age'], new_values['city'], id_card_to_update))# 提交更改cnx.commit()print(f"Record with ID_Card '{id_card_to_update}' updated successfully!")
except mysql.connector.Error as err:print(f"Error: '{err}'")
finally:# 关闭游标和连接if cursor:cursor.close()if cnx.is_connected():cnx.close()
3-2、用PyMySQL库
import pymysql
# 数据库连接配置
config = {'user': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'charset': 'utf8mb4', # 添加字符集配置,防止编码问题'cursorclass': pymysql.cursors.DictCursor # 虽然在更新操作中不是必需的,但这里保持一致
}
# 要更新的记录的ID_Card值
id_card_to_update = '443689564710526448'
# 新的记录值
new_values = {'name': 'Jimmy','age': 15,'city': 'Foshan'
}
# SQL更新语句
update_query = """
UPDATE myelsa_table
SET name = %s, age = %s, city = %s
WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = pymysql.connect(**config)with cnx.cursor() as cursor:# 使用with语句确保游标在使用完毕后被关闭# 执行SQL更新语句cursor.execute(update_query, (new_values['name'], new_values['age'], new_values['city'], id_card_to_update))# 提交更改cnx.commit()print(f"Record with ID_Card '{id_card_to_update}' updated successfully!")
except pymysql.MySQLError as err:print(f"Error: '{err}'")
finally:
# 使用with语句时,连接会在with块结束时自动关闭
# 如果连接没有通过with管理,需要在这里关闭if cnx.open:cnx.close()
3-3、用PeeWee库
from peewee import *
# 定义数据库连接
db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')
# 定义数据库模型类
class MyElsa_Table(Model):ID_Card = CharField(primary_key=True) # 注意:这里保留了你的原始字段命名name = CharField()age = IntegerField()city = CharField()class Meta:database = db
# 连接到数据库
db.connect()
# 要更新的记录的ID_Card值
id_card_to_update = '443689564710526448'
# 新的记录值
new_values = {'name': 'Jimmy','age': 15,'city': 'Foshan'
}
try:# 使用ORM方法执行更新操作query = (MyElsa_Table.update(name=new_values['name'], age=new_values['age'], city=new_values['city']).where(MyElsa_Table.ID_Card == id_card_to_update))query.execute()# 如果没有错误,打印成功消息print(f"Record with ID_Card '{id_card_to_update}' updated successfully!")
except Exception as e:# 捕获异常并打印错误信息print(f"Error: '{e}'")
finally:# 关闭数据库连接db.close()
3-4、用SQLAlchemy库
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.exc import SQLAlchemyError
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'port': 3306, # 如果端口不是默认的3306,请添加此行并替换为正确的端口'echo': False # 如果想看到执行的SQL语句,设置为True
}
# 创建数据库引擎
engine = create_engine(f'mysql+pymysql://{config["username"]}:{config["password"]}@{config["host"]}:{config["port"]}/{config["database"]}',echo=config['echo'])
# 定义元数据
metadata = MetaData()
# 假设你的表结构如下(需要根据实际情况调整列类型和名称)
myelsa_table = Table('myelsa_table', metadata,Column('ID_Card', String, primary_key=True),Column('name', String),Column('age', Integer),Column('city', String),autoload_with=engine)
# 要更新的记录的ID_Card值
id_card_to_update = '443689564710526448'
# 新的记录值
new_values = {'name': 'Jimmy','age': 15,'city': 'Foshan'
}
# 创建会话类
Session = sessionmaker(bind=engine)
try:# 创建会话对象session = Session()# 构造更新语句stmt = myelsa_table.update().where(myelsa_table.c.ID_Card == id_card_to_update).values(**new_values)# 执行更新session.execute(stmt)# 提交更改session.commit()print(f"Record with ID_Card '{id_card_to_update}' updated successfully!")
except SQLAlchemyError as e:print(f"Error: '{e}'")# 如果出错,回滚更改session.rollback()
finally:# 关闭会话session.close()
4、查询记录
4-1、用mysql-connector-python库
import mysql.connector
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名
}
# 查询所有记录的SQL语句
query_all = """
SELECT * FROM myelsa_table
"""
# 查询特定记录的SQL语句(例如,根据ID_Card查询)
id_card_to_query = '443689564710526448'
query_by_id_card = """
SELECT * FROM myelsa_table WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 执行查询所有记录的SQL语句cursor.execute(query_all)# 获取所有记录for (name, id_card, age, city) in cursor:print(f"Name: {name}, ID Card: {id_card}, Age: {age}, City: {city}")# 如果需要查询特定记录,取消注释以下代码# cursor.execute(query_by_id_card, (id_card_to_query,))# record = cursor.fetchone()# if record:# (name, id_card, age, city) = record# print(f"Name: {name}, ID Card: {id_card}, Age: {age}, City: {city}")# else:# print(f"No record found for ID Card: {id_card_to_query}")
except mysql.connector.Error as err:print(f"Error: '{err}'")
finally:# 关闭游标和连接if cursor:cursor.close()if cnx.is_connected():cnx.close()
4-2、用PyMySQL库
import pymysql
# 数据库连接配置
config = {'user': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'charset': 'utf8mb4', # 添加字符集配置,防止编码问题'cursorclass': pymysql.cursors.DictCursor # 使用字典游标以便按列名访问数据
}
# 查询所有记录的SQL语句
query_all = """
SELECT * FROM myelsa_table
"""
# 查询特定记录的SQL语句(例如,根据ID_Card查询)
id_card_to_query = '443689564710526448'
query_by_id_card = """
SELECT * FROM myelsa_table WHERE ID_Card = %s
"""
try:# 连接到数据库cnx = pymysql.connect(**config)with cnx.cursor(pymysql.cursors.DictCursor) as cursor: # 使用with语句自动管理游标# 执行查询所有记录的SQL语句cursor.execute(query_all)# 获取所有记录for row in cursor:print(f"Name: {row['name']}, ID Card: {row['ID_Card']}, Age: {row['age']}, City: {row['city']}")# 如果需要查询特定记录,取消注释以下代码# cursor.execute(query_by_id_card, (id_card_to_query,))# record = cursor.fetchone()# if record:# print(f"Name: {record['name']}, ID Card: {record['ID_Card']}, Age: {record['age']}, City: {record['city']}")# else:# print(f"No record found for ID Card: {id_card_to_query}")# 注意:因为使用了with语句,所以不需要显式关闭游标# 提交(在这里其实不需要,因为只是查询)cnx.commit()except pymysql.MySQLError as err:print(f"Error: '{err}'")
finally:
# 使用with语句时,连接会在with块结束时自动关闭
# 如果连接没有通过with管理,需要在这里关闭if cnx.open:cnx.close()
4-3、用PeeWee库
from peewee import *
# 数据库连接配置
db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')
# 定义数据库模型类
class MyElsa_Table(Model):ID_Card = CharField(primary_key=True)name = CharField()age = IntegerField()city = CharField()class Meta:database = db
# 连接到数据库
db.connect()
# 查询所有记录
def query_all_records():for record in MyElsa_Table.select():print(f"Name: {record.name}, ID Card: {record.ID_Card}, Age: {record.age}, City: {record.city}")
# 查询特定记录(根据ID_Card)
def query_record_by_id_card(id_card):record = MyElsa_Table.get_or_none(MyElsa_Table.ID_Card == id_card)if record:print(f"Name: {record.name}, ID Card: {record.ID_Card}, Age: {record.age}, City: {record.city}")else:print(f"No record found for ID Card: {id_card}")
# ID_Card要查询的特定值
id_card_to_query = '443689564710526448'
try:# 查询所有记录query_all_records()print("\n---\n")# 查询特定记录query_record_by_id_card(id_card_to_query)
except MyElsa_Table.DoesNotExist:print(f"No record found for ID Card: {id_card_to_query}")
except Exception as e:print(f"Error: '{e}'")
finally:# 关闭数据库连接(如果使用了连接池,则可能不需要显式关闭)db.close()
4-4、用SQLAlchemy库
from sqlalchemy import create_engine, Column, Integer, String, MetaData
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.exc import SQLAlchemyError
# 声明基础类
Base = declarative_base()
# 定义ORM模型
class MyElsaTable(Base):__tablename__ = 'myelsa_table'id_card = Column(String, primary_key=True)name = Column(String)age = Column(Integer)city = Column(String)
# 数据库连接配置
config = {'username': 'root', # 替换为你的MySQL用户名'password': '123456', # 替换为你的MySQL密码'host': '127.0.0.1', # 如果数据库在远程服务器上,请替换为相应的主机名或IP地址'database': 'test_database', # 数据库名'port': 3306, # 端口号,默认为3306'echo': False # 是否打印SQL语句
}
# 创建数据库引擎
engine = create_engine(f'mysql+pymysql://{config["username"]}:{config["password"]}@{config["host"]}:{config["port"]}/{config["database"]}',echo=config['echo'])
# 创建Session类
Session = sessionmaker(bind=engine)
try:# 创建Session对象session = Session()# 查询所有记录all_records = session.query(MyElsaTable).all()for record in all_records:print(f"Name: {record.name}, ID Card: {record.id_card}, Age: {record.age}, City: {record.city}")# 查询特定记录(例如,根据ID_Card查询)id_card_to_query = '443689564710526448'record = session.query(MyElsaTable).filter_by(id_card=id_card_to_query).first()if record:print(f"Name: {record.name}, ID Card: {record.id_card}, Age: {record.age}, City: {record.city}")else:print(f"No record found for ID Card: {id_card_to_query}")
except SQLAlchemyError as e:print(f"Error: '{e}'")
finally:# 关闭Sessionsession.close()
二、推荐阅读
1、Python函数之旅
2、Python算法之旅
3、博客个人主页
相关文章:
Python筑基之旅-MySQL数据库(四)
目录 一、数据表操作 1、新增记录 1-1、用mysql-connector-python库 1-2、用PyMySQL库 1-3、用PeeWee库 1-4、用SQLAlchemy库 2、删除记录 2-1、用mysql-connector-python库 2-2、用PyMySQL库 2-3、用PeeWee库 2-4、用SQLAlchemy库 3、修改记录 3-1、用mysql-conn…...
OceanBase SQL 诊断和调优实践——【DBA从入门到实践】第七期
数据库作为绝大多数应用系统储存数据的核心系统,在用户系统需要访问数据时,有着至关重要的作用。在这些交互中,SQL 语言是应用与数据库系统之间“沟通”的桥梁,它负责将应用的指令传达给数据库。因此,SQL 的性能好坏直…...
C++之std::is_trivially_copyable(平凡可复制类型检测)
目录 1.C基础回顾 1.1.平凡类型 1.2.平凡可复制类型 1.3.标准布局类型 2.std::is_trivially_copyable 2.1.定义 2.2.使用 2.3.总结 1.C基础回顾 在C11中,平凡类型(Trivial Type)、平凡可复制类型(TrivialCopyable&#x…...
宝石收集,tarjan
0宝石收集 - 蓝桥云课 (lanqiao.cn) nint(input()) s0input() mint(input()) mp[[] for i in range(n1)] for i in range(m):a,bmap(int,input().split())a1b1mp[a].append(b)import sys sys.setrecursionlimit(100000000) dfn[0 for i in range(n1)] low[0 for i in range(n1…...
python 面对对象 类 继承
继承 继承就是为了解决两个有大量重复性代码的类,抽象出一个更抽象的类放公共代码,主要是代码复用,方便代码的管理与修改 类的继承包括属性和方法,私有属性也可继承 class Person(): # 默认是继承object超类pass…...
Rust腐蚀怎么用服务器一键开服联机教程
1、进入控制面板 首次登陆需要点击下方重置密码,如何再点击登录面板,点击后会跳转到登录页面,输入用户名和密码登录即可 2、设置游戏端口 由于腐蚀的设置需要三个端口,它们用于游戏端口(必须为首选端口)&a…...
公共代理IP和独享代理IP之间的区别?
公共代理IP和独享代理IP在网络应用中扮演着不同的角色,它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同,公共代理IP,顾名思义࿰…...
基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践
基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步,前端开发面临越来越多的挑战,其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时,往往显得…...
淘宝订单系统ERP中如何接入平台订单信息?(订单API)
淘宝开放平台中有交易API,里面有各种关于交易的API接口。但是申报应用权限的审核流程严格又漫长。不少公司费时费力的申请后,结果还是没有审批下来。 调用淘宝自定义接口custom,可以实现淘宝开放平台API的调用。技术人员会根据您需要的接口做…...
在Spring Boot项目中集成和使用MQTT
在物联网(IoT)应用中,MQTT(消息队列遥测传输)协议因其轻量级和高效性被广泛使用。在Spring Boot项目中,我们可以通过集成org.springframework.integration:spring-integration-mqtt依赖来实现对MQTT的支持。…...
14、设计模式之访问者模式
访问者模式 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元…...
Excel如何换行不换格
在换行的字之间 按住Alt 回车...
Elasticsearch 8.1官网文档梳理 - 十五、Aggregations(聚合)
Aggregations ES 的聚合可以总结为三类:指标聚合、统计聚合、其他分析聚合。 Metric aggregations: 计算 field 的指标值,例如平均值、最大值、和等指标Bucket aggregations: 基于 field 的值、范围、或其他标准对 doc 分类&…...
计算机系统概论
目录 1. 计算机的分类 2. 计算机的发展简史 3. 计算机的硬件 1. 处理器(CPU) 2. 内存(Memory) 3. 存储设备 4. 输入输出设备 4. 计算机的软件 1. 软件的分类 1.1 系统软件 1.2 应用软件 2. 软件的特点 3. 软件开发 4…...
【Vue】diff 算法
diff的时机 当组件创建时,以及依赖的属性或数据变化时,会运行一个函数,该函数会做两件事: 运行_render生成一棵新的虚拟dom树(vnode tree),返回根节点运行_update,传入虚拟dom树的根节点,对新旧…...
Spring Boot 3.x 与 Spring Boot 2.x 的对比
Spring Boot 是 Java 开发领域的一个重要框架,它简化了基于 Spring 的应用开发。随着版本的不断更新,Spring Boot 提供了更多功能、更好的性能以及更简洁的配置。本文将详细对比 Spring Boot 3.x 和 Spring Boot 2.x,探讨它们之间的主要区别和…...
SSLError ClosedPoolError
分析日志 从您提供的日志文件内容来看,存在几个明显的问题导致了实例无法创建: SSL证书验证失败:日志中多次出现SSLError(SSLError(1, [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)),)错误。这表明客户端在尝试…...
勒索软件分析_Conti
0. Conti介绍 勒索软件即服务(Ransomware as a Service,RaaS)变体 Conti 推出还不到两年,已经进行了第七次迭代。Conti被证明是一种敏捷而熟练的恶意软件威胁,能够自主和引导操作,并具有无与伦比的加密速度…...
Linux系统如何通过编译方式安装python3.11.3
1.切换到/data 目录 cd /data 2.下载python源码Python-3.11.3.tgz wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz tar -xzf Python-3.11.0.tgz cd Python-3.11.3 3.配置python的安装路径 和 执行openssl的路径 ./configure --prefix/usr/local/pyth…...
仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码
码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
[学习笔记]使用git rebase做分支差异化同步
在一个.NET 项目中,使用了Volo.Abp库,但出于某种原因,需要源码调试,因此,使用源码方式集成的项目做了一个分支archive-abp-source 其中引用方式变更操作的提交为:7de53907 后续,在master分支中…...
