Python筑基之旅-MySQL数据库(四)

news2024/11/20 14:19:14

目录

一、数据表操作

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 = db
        table_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:
    # 关闭Session
    session.close()

二、推荐阅读

1、Python函数之旅

2、Python算法之旅

3、博客个人主页

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

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

相关文章

APP广告变现怎么实现的,背后逻辑是什么?

广告变现的实现主要基于以下几个关键步骤和逻辑&#xff1a; 用户获取与留存&#xff1a;首先&#xff0c;APP需要吸引足够的用户并确保他们的留存率。只有拥有庞大且活跃的用户基础&#xff0c;APP才能吸引广告商投放广告。因此&#xff0c;开发者需要通过优化APP质量、提升用…

经常碰到的20个等待事件

经常碰到的20个等待事件 oracle等待事件简介 DBA团队维护的部分应用运行在oracle数据库平台&#xff0c;为及时了解数据库的运行情况&#xff0c;需要建立涵盖各个维度的监控体系&#xff0c;包括实例状态、空间使用率、ORA错误等数十项监控指标。这其中有一个有效判断数据库…

低代码开发:拖拽式可视化构建工业物联网系统

什么是低代码&#xff1f; 低代码(Low Code)是一种可视化的软件开发方法&#xff0c;通过最少的手动编码可以更快地交付应用程序。低代码平台的图形用户界面和拖放功能可自动执行开发过程的各个方面&#xff0c;从而消除对传统计算机编程方法的依赖。 什么是低代码平台&#…

关于手机中Camera Sensor Flicker产生原因和解决方法

Camera flicker相信在一部分中低端机里可以看到的现象(拍灯最为明显)。 在了解Camera flicker前&#xff0c;先了解一些词汇。 快门&#xff1a;快门是照相机用来控制感光片有效曝光时间的机构。是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次…

HarmonyOS 鸿蒙应用开发 DevEco Studio环境搭建 (值得收藏哦)

目录 1、华为开发者官网下载 DevEco Studio 2、安装DevEco Studi 3、安装过程具体步骤 4、认证华为开发者账号 5、编写第一个鸿蒙应用 1、华为开发者官网下载 DevEco Studio 前往&#xff1a;华为开发者官网地址 下载&#xff0c;我这里下载的 deveco-studio-3.1.0.500版…

如何为 kNN 搜索选择最佳 k 和 num_candidates

作者&#xff1a;Madhusudhan Konda 如何选择最好的 k 和 num_candidates&#xff1f; 向量搜索在当前的生成式人工智能/机器学习领域中已经成为一个改变游戏规则的技术。它允许我们基于语义含义而不仅仅是精确的关键词匹配来找到相似的项目。 Elasticsearch的 k-近邻&#x…

Pandas 创建层次化索引

1.创建多层次索引 1.1 隐式构造 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组 # 导入pandasimport numpy as npimport pandas as pd​data np.random.randint(0,100,size(6,6))​# 行索引index [ ["1班","1班","1班&qu…

Java+原生HTML+ WebSocket+MySQL云HIS信息管理系统源码 支持一体化电子病历四级

Java原生HTML WebSocketMySQL云HIS信息管理系统源码 支持一体化电子病历四级 云HIS电子病历系统是一种基于云计算技术的医疗信息管理系统&#xff0c;旨在实现医疗信息的数字化、标准化和共享化。该系统通过云计算平台&#xff0c;将医院内部的各个业务模块&#xff08;如门诊、…

buu[HCTF 2018]WarmUp(代码审计)

buu[HCTF 2018]WarmUp&#xff08;代码审计&#xff09; 题目 访问source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php…

【吊打面试官系列】Java高并发篇 - ReadWriteLock 是什么 ?

大家好&#xff0c;我是锋哥。今天分享关于 【ReadWriteLock 是什么 &#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; ReadWriteLock 是什么 &#xff1f; 首先明确一下&#xff0c;不是说 ReentrantLock 不好&#xff0c;只是 ReentrantLock 某些时候有局限。 …

Hadoop+Spark大数据技术 实验8 Spark SQL结构化

9.2 创建DataFrame对象的方式 val dfUsers spark.read.load("/usr/local/spark/examples/src/main/resources/users.parquet") dfUsers: org.apache.spark.sql.DataFrame [name: string, favorite_color: string ... 1 more field] dfUsers.show() -----------…

【传知代码】掩码自回归编码器法(论文复现)

前言&#xff1a;在探索现代数据科学的前沿领域时&#xff0c;掩码自回归编码器法&#xff08;Masked Autoencoder&#xff0c;简称MAE&#xff09;无疑是一个引人注目的亮点。这一技术&#xff0c;凭借其独特的训练机制和卓越的性能&#xff0c;已经在图像识别、自然语言处理以…

K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍

一、K8s FileBeat ELK 介绍 ELK&#xff0c;即Elasticsearch、Logstash和Kibana三个开源软件的组合&#xff0c;是由Elastic公司提供的一套完整的日志管理解决方案。Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎&#xff0c;它允许你快速地、近乎实时地存储、搜索…

PCB设计——返回路径

回流基本概念 从电路理论上看&#xff0c;信号是由电流传播的&#xff0c;明确的说是电子的运动&#xff0c;电子流的特性之一就是电子从不在任何地方停留&#xff0c;无论电流流到哪里&#xff0c;必然要回来&#xff0c;因此电流总是在环路中流动&#xff0c;从源到负载然后从…

高效使用 LaTeX 技巧

但对于一般人而言&#xff0c;你不需要通过学习 Vim 来达到高效编辑 LaTeX 的方式。而是通过一些比较容易实现的方式&#xff0c;使得你能够在原来的基础上更加高效得使用 LaTeX&#xff0c;并达到以思考的速度输入 LaTeX 的方式。 在第一部分&#xff0c;我会首先介绍高效编辑…

1301-习题1-1高等数学

1. 求下列函数的自然定义域 自然定义域就是使函数有意义的定义域。 常见自然定义域&#xff1a; 开根号 x \sqrt x x ​&#xff1a; x ≥ 0 x \ge 0 x≥0自变量为分式的分母 1 x \frac{1}{x} x1​&#xff1a; x ≠ 0 x \ne 0 x0三角函数 tan ⁡ x cot ⁡ x \tan x \cot x …

告别登录烦恼,WPS免登录修改器体验!(如何实现不登录使用WPS)

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 演示环境 &#x1f3e1;&#x1f4d2; 解决方案 &#x1f4d2;&#x1f388; 获取方式 &#x1f388;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 想象一下&#xff0c;如果你能够绕过繁琐的登录流程&#x…

探秘机器学习经典:K-近邻算法(KNN)全解析

在浩瀚的机器学习宇宙中,K-近邻算法(K-Nearest Neighbors,简称KNN)如同一颗璀璨的明星,以其简洁直观的原理和广泛的应用范围,赢得了众多数据科学家的喜爱。今天,让我们一起揭开KNN的神秘面纱,深入探讨它的运作机制、优缺点、应用场景,以及如何在实际项目中灵活运用。 …

从零到一建设数据中台 - 数据治理路径

一、数据治理的内容 数据治理用于规范数据的生成以及使用,改进数据质量,对数据进行加工处理,提升数据价值。提供识别和度量数据质量能力、数据清洗转换能力、数据加工三个核心能力。 数据汇集:数据汇集是数据中台数据接入的入口,所有数据来自于业务系统、日志、文件、网络…

JDBC总结

目录 JDBC(java database connection) JDBC连接数据库步骤: 1. 在项目中添加jar文件,如图所示 2.加载驱动类 向数据库中插入数据代码示例: 第一种: 第二种: 查询操作 : 第一种: 第二种: JDBC(java database connection) java数据库连接.api(应用程序编程接口) ,可…