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、博客个人主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java轻松转换Markdown文件到Word和PDF文档

Markdown 凭借其简洁易用的特性&#xff0c;成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果&#xff0c;例如在专业分享文档或打印成离线使用的纸质版时&#xff0c;就需要将Markdown文件以其他固定的文档格式呈现。通过将 Markdown 转换为 Word 和…

OpenHarmony实战开发——网络组件axios可以在OpenHarmony上使用了

什么是axios 上古浏览器页面在向服务器请求数据时&#xff0c;因为返回的是整个页面的数据&#xff0c;页面都会强制刷新一下&#xff0c;这对于用户来讲并不是很友好。并且我们只是需要修改页面的部分数据&#xff0c;但是从服务器端发送的却是整个页面的数据&#xff0c;十分…

高效写代码java-推荐插件1(格式转化 ConverterX )-日后待更新

ConverterX 主要功能:格式转化 字符串格式转换 日期转换 Json格式转义 字符格式 快捷键 ctrl shiftS Upper(CODEEASE)字符串全部变成大写Lower(codeease)字符串全部变成小写Camel(codeEase)字符串变成小驼峰ClassCaemel(CodeEase)字符串变成大驼峰UnderlineUpper(CODE_EAS…

项目管理:Jira,禅道,GitHub Issues对比

Jira、禅道&#xff08;ZenTao&#xff09;和GitHub Issues都是项目管理工具&#xff0c;但它们在功能、适用场景和特性上有所不同。以下是它们之间的对比&#xff1a; 功能&#xff1a; Jira&#xff1a;是一款强大的项目管理工具&#xff0c;适用于各种项目&#xff0c;尤其…

Vue3组件间通信通过回调函数传递数据

Vue3组件间通信通过回调函数传递数据 一、前言1、使用场景2、实现方法1. 父组件中定义回调方法2. 子组件中触发回调方法 二、结论 一、前言 在 Vue 3 中&#xff0c;组件之间的通信是一个重要的主题。在许多情况下&#xff0c;你可能需要从子组件向父组件传递数据或触发父组件…

python实用系列:按顺序重命名文件

啊&#xff0c;好久没更博客了&#xff0c;今天偶然想换个桌面壁纸&#xff0c;于是上网搜了两个比较满意的桌面壁纸&#xff0c;都是压缩包&#xff1a; 当我想要给他们放到我的桌面壁纸文件里的时候患了难&#xff0c;因为他们的名字有相同的&#xff1a; anime文件夹里边&a…

揭秘!亚马逊、Vinted卖家如何借助自养号测评实现爆单?

​作为一名跨境卖家&#xff0c;你一定梦想着能够在亚马逊上实现爆单&#xff0c;让产品火爆销售。下面就分享五个秘诀&#xff0c;帮助你实现这个梦想&#xff1a; 1. 优质产品&#xff1a;首先&#xff0c;确保你的产品质量优秀&#xff0c;能够满足消费者的需求。品质好的产…

基于Matlab使用BP神经网络进行电力系统短期负荷预测

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 电力系统的短期负荷预测对于电力调度和能源管理具有至关重要的作用。通过准确地预测电力负荷&…

【产品经理】输出

引言&#xff1a;        在最近频繁的产品管理职位面试中&#xff0c;我深刻体会到了作为产品经理需要的不仅仅是对市场和技术的敏锐洞察&#xff0c;更多的是在复杂多变的环境中&#xff0c;如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享…

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

节点唤醒方式 本地唤醒&#xff1a; 唤醒源来源于自身模块&#xff0c;比如常说的KL15&#xff0c;控制器由KL15线供电&#xff0c;即只能在钥匙置于“ACC”或者“ON”档时运行软件和维持CAN通信 对于正在运行的CPU软件&#xff0c;无论它处在什么状态&#xff0c;只要Hardwa…

深度学习模型keras第二十五讲:使用KerasNLP从零开始预训练Transformer模型

1、KerasNPL预训练Transformer模型概念 使用KerasNLP来预训练一个Transformer模型涉及多个步骤。由于Keras本身并不直接提供NLP的预训练模型或工具集&#xff0c;我们通常需要结合像TensorFlow Hub、Hugging Face的Transformers库或自定义的Keras层来实现。 以下是一个简化的…

Android Baidu地图SDK只展示蓝背景,没有绘制内容问题解决

背景 项目里接入了Baidu地图SDK&#xff0c;用于展示信息、选点。 在一个新的Activity中&#xff0c;引入了TextureMapView&#xff0c;用于地图展示。 选点过程有两个页面。 A页面中有一个不能滑动的地图&#xff0c;只是用来展示&#xff0c;没有其他任何操作。 点击A页…

Plesk中如何移除之前添加的域名

我这边想要移除我之前绑定到主机的域名&#xff0c;但是不知道如何在主机上面进行移除&#xff0c;由于我使用的Hostease的Windows虚拟主机产品默认带普通用户权限的Plesk面板&#xff0c;但是不知道如何在Plesk上操作移除域名&#xff0c;因为也是对于Hostease主机产品不是很了…

java单元测试:JUnit断言库

JUnit断言库提供了一组用于验证测试结果的工具。这些断言方法帮助开发人员在单元测试中明确表达预期结果&#xff0c;并在实际结果与预期结果不符时报告失败。 1. JUnit中的断言 断言用于验证测试的预期结果。JUnit 5&#xff08;Jupiter&#xff09;提供了一组静态方法&…

获取和设置代理的动态IP的方式

引言 大家好&#xff0c;今天我来给大家分享一下如何通过编程技术来获取和设置代理的动态IP。在网络世界中&#xff0c;代理和动态IP是非常常见的概念&#xff0c;尤其对于需要大规模访问网站或者需要隐藏真实IP地址的应用程序来说&#xff0c;更是必不可少的工具。接下来&…

【精品】【算法实战】每日一题:如何用Python实现给定整数序列中寻找最小长度窗口以包含所有不同元素的算法?

问题&#xff1a; 如何用Python实现给定整数序列中寻找最小长度窗口以包含所有不同元素的算法&#xff1f; 核心思路 核心思路是利用双端队列&#xff08;作为滑动窗口&#xff09;来找到一个满足特定条件的最小长度子序列。算法遍历给定的序列&#xff0c;对于每个新数据点…

【Spring】Spring框架对RESTFul风格的支持

1、简介 Spring框架对RESTful风格的支持主要体现在Spring MVC和Spring Boot等模块中。RESTful&#xff08;Representational State Transfer&#xff0c;表述层资源状态转移&#xff09;是一种软件架构风格&#xff0c;它强调资源&#xff08;通常是网络上的信息&#xff09;的…

Java方法的基本用法

Java方法的基本用法 前言一、什么是方法方法存在的意义示例 二、方法定义语法基本语法代码示例注意事项 三、方法调用的执行过程基本规则代码示例计算两个整数相加计算 1! 2! 3! 4! 5! 四、实参和形参的关系代码示例交换两个整型变量原因分析解决办法 五、没有返回值的方法…

初识java——javaSE (6)接口的实现——比较器与深拷贝,浅拷贝

文章目录 前言一 比较器1.1 关于两个对象的比较1.2 Comparable接口&#xff1a;1.3 Arrays.sort方法的实现1.4 比较器的实现Comparator接口 二 深拷贝与浅拷贝2.1 浅拷贝&#xff1a;Cloneable接口&#xff1a;clone方法&#xff1a;实现拷贝&#xff1a;浅拷贝&#xff1a; 2.…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字&#xff0c;先用import导入keyword模块 print(keyword.kwlist) 运行结果&#xff1a; [False, None, True, and, as, assert, async, await, break, class, continue, def, …