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

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

时间:2024-05-25 11:25:05浏览次数:29  
标签:Python 数据库 筑基 id record card MySQL ID Card

目录

一、数据表操作

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 = {
    'user': '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 = {
    'user': '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 = {
    'user': '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 = {
    'user': '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、博客个人主页

标签:Python,数据库,筑基,id,record,card,MySQL,ID,Card
From: https://blog.csdn.net/ygb_1024/article/details/139188631

相关文章

  • kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法
    kettle中不能直接调用python脚本,可以通过shell脚本和http进行调用pyton服务。一、shell脚本调用python脚本1、下面是一段简单的无参python脚本importosdefmain():#在这里编写Python脚本的主要逻辑print("Hello,thisisaPythonscriptcalledbyshell!")i......
  • Python中的异常处理:try, except, else, finally详解
    Python中的异常处理:try,except,else,finally详解在Python编程中,异常处理是确保程序健壮性和错误处理能力的重要机制。通过使用try,except,else,finally等关键字,Python提供了灵活的异常处理框架,使得开发者能够优雅地处理运行时错误和其他异常情况。本文将详细解析这些......
  • Python中别再用 ‘+‘ 拼接字符串了!
    大家好,在Python编程中,我们常常需要对字符串进行拼接。你可能会自然地想到用+操作符将字符串连接起来,毕竟这看起来简单明了。在Python中,字符串是不可变的数据类型,这意味着一旦字符串被创建,它就不能被修改。因此,当你尝试通过使用+来连接字符串时,实际上Python会创建......
  • Python异步编程之基础概念
    Python异步编程之基础概念在现代编程中,异步编程是一种重要的技术,尤其是在处理I/O密集型任务时,异步编程可以大大提高程序的性能和响应速度。本文将介绍Python异步编程的基础概念,帮助你理解其原理和应用。什么是异步编程?异步编程是一种并发编程模型,它允许程序在等待某些任......
  • MySQL什么时候 锁表?如何防止锁表?
    锁表会带来一系列问题,影响数据库的性能和系统的稳定性。主要是下面的四个问题: 性能问题、死锁问题、可用性问题、一致性问题1. 锁表带来的性能问题锁表会阻止其他事务对该表的并发访问,包括读操作和写操作。锁表会导致严重的性能问题:系统吞吐量下降:多个事务需要依次等待......
  • SpringCloud + Python 混合微服务架构,打造AI分布式业务应用的技术底层
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • MySQL入门——增删查改(上)
    新增语法:INSERT[INTO]table_name[(column[,column]...)]VALUES(value_list)[,(value_list)]...value_list:value,[,value]...单行数据+全列插入多行数据+指定列插入查询语法:SELECT[DISTINCT]{*|{column[,column]...}[FROMta......
  • 深入解析Python并发的多线程和异步编程
    在Python编程中,多线程是一种常用的并发编程方式,它可以有效地提高程序的执行效率,特别是在处理I/O密集型任务时。Python提供了threading模块,使得多线程编程变得相对简单。本文将深入探讨threading模块的基础知识,并通过实例演示多线程的应用。1.多线程基础概念在开始之前,让我们......
  • 计算机毕业设计python+spark天气预测 天气可视化 天气大数据 空气质量检测 空气质量分
    摘  要近些年大数据人工智能等技术发展迅速,我国工业正努力从“制造”迈向“智造”实现新跨越。神经网络(NeuronNetwork)是一种计算模型,通过大量数据的学习,来发现数据之间的模式和规律,模仿人脑神经元的工作方式。随着算力的提升和算法的不断成熟图像识别技术已经完全融入到生......
  • python print 追加写入文件
    在Python中,要使用print函数将内容追加写入到文件而不是覆盖原有内容,你需要在打开文件时使用追加模式'a'。以下是一个示例:pythonwithopen('output.txt','a')asfile:print("这是追加到文件的内容",file=file)在这个例子中:open('output.txt','a')以追加模式('a�......