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

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从入门到实践】第七期

数据库作为绝大多数应用系统储存数据的核心系统&#xff0c;在用户系统需要访问数据时&#xff0c;有着至关重要的作用。在这些交互中&#xff0c;SQL 语言是应用与数据库系统之间“沟通”的桥梁&#xff0c;它负责将应用的指令传达给数据库。因此&#xff0c;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中&#xff0c;平凡类型&#xff08;Trivial Type&#xff09;、平凡可复制类型&#xff08;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 面对对象 类 继承

继承 继承就是为了解决两个有大量重复性代码的类&#xff0c;抽象出一个更抽象的类放公共代码&#xff0c;主要是代码复用&#xff0c;方便代码的管理与修改 类的继承包括属性和方法&#xff0c;私有属性也可继承 class Person(): # 默认是继承object超类pass…...

Rust腐蚀怎么用服务器一键开服联机教程

1、进入控制面板 首次登陆需要点击下方重置密码&#xff0c;如何再点击登录面板&#xff0c;点击后会跳转到登录页面&#xff0c;输入用户名和密码登录即可 2、设置游戏端口 由于腐蚀的设置需要三个端口&#xff0c;它们用于游戏端口&#xff08;必须为首选端口&#xff09;&a…...

公共代理IP和独享代理IP之间的区别?

公共代理IP和独享代理IP在网络应用中扮演着不同的角色&#xff0c;它们之间的区别主要体现在使用方式、性能、安全性以及隐私保护等方面。以下是对这两种代理IP的详细对比和分析。 第一点就是使用的方式以及成本上的不同&#xff0c;公共代理IP&#xff0c;顾名思义&#xff0…...

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步&#xff0c;前端开发面临越来越多的挑战&#xff0c;其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时&#xff0c;往往显得…...

淘宝订单系统ERP中如何接入平台订单信息?(订单API)

淘宝开放平台中有交易API&#xff0c;里面有各种关于交易的API接口。但是申报应用权限的审核流程严格又漫长。不少公司费时费力的申请后&#xff0c;结果还是没有审批下来。 调用淘宝自定义接口custom&#xff0c;可以实现淘宝开放平台API的调用。技术人员会根据您需要的接口做…...

在Spring Boot项目中集成和使用MQTT

在物联网&#xff08;IoT&#xff09;应用中&#xff0c;MQTT&#xff08;消息队列遥测传输&#xff09;协议因其轻量级和高效性被广泛使用。在Spring Boot项目中&#xff0c;我们可以通过集成org.springframework.integration:spring-integration-mqtt依赖来实现对MQTT的支持。…...

14、设计模式之访问者模式

访问者模式 在访问者模式&#xff08;Visitor Pattern&#xff09;中&#xff0c;我们使用了一个访问者类&#xff0c;它改变了元素类的执行算法。通过这种方式&#xff0c;元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式&#xff0c;元…...

Excel如何换行不换格

在换行的字之间 按住Alt 回车...

Elasticsearch 8.1官网文档梳理 - 十五、Aggregations(聚合)

Aggregations ES 的聚合可以总结为三类&#xff1a;指标聚合、统计聚合、其他分析聚合。 Metric aggregations&#xff1a; 计算 field 的指标值&#xff0c;例如平均值、最大值、和等指标Bucket aggregations&#xff1a; 基于 field 的值、范围、或其他标准对 doc 分类&…...

计算机系统概论

目录 1. 计算机的分类 2. 计算机的发展简史 3. 计算机的硬件 1. 处理器&#xff08;CPU&#xff09; 2. 内存&#xff08;Memory&#xff09; 3. 存储设备 4. 输入输出设备 4. 计算机的软件 1. 软件的分类 1.1 系统软件 1.2 应用软件 2. 软件的特点 3. 软件开发 4…...

【Vue】diff 算法

diff的时机 当组件创建时&#xff0c;以及依赖的属性或数据变化时&#xff0c;会运行一个函数&#xff0c;该函数会做两件事&#xff1a; 运行_render生成一棵新的虚拟dom树(vnode tree)&#xff0c;返回根节点运行_update&#xff0c;传入虚拟dom树的根节点&#xff0c;对新旧…...

Spring Boot 3.x 与 Spring Boot 2.x 的对比

Spring Boot 是 Java 开发领域的一个重要框架&#xff0c;它简化了基于 Spring 的应用开发。随着版本的不断更新&#xff0c;Spring Boot 提供了更多功能、更好的性能以及更简洁的配置。本文将详细对比 Spring Boot 3.x 和 Spring Boot 2.x&#xff0c;探讨它们之间的主要区别和…...

SSLError ClosedPoolError

分析日志 从您提供的日志文件内容来看&#xff0c;存在几个明显的问题导致了实例无法创建&#xff1a; SSL证书验证失败&#xff1a;日志中多次出现SSLError(SSLError(1, [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)),)错误。这表明客户端在尝试…...

勒索软件分析_Conti

0. Conti介绍 勒索软件即服务&#xff08;Ransomware as a Service&#xff0c;RaaS&#xff09;变体 Conti 推出还不到两年&#xff0c;已经进行了第七次迭代。Conti被证明是一种敏捷而熟练的恶意软件威胁&#xff0c;能够自主和引导操作&#xff0c;并具有无与伦比的加密速度…...

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体育直播吧足球直播综合体育直播源码

码名称&#xff1a;仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称&#xff1a;仿《Q极速体育》NBACBA体育直…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...