[Python程序课程设计] 利用sqlalchemy封装mysql操作

本文详细介绍如何使用SQLAlchemy ORM进行数据库操作,包括员工信息的增删改查,通过Python代码实现数据库交互,适用于初学者和进阶用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在此之前,你需要自行安装sqlalchemy相关库。

1.增

创造一个Session实例,之后调用add(Emp实例)

Session_class = sessionmaker(bind=engine)
Session = Session_class()
emp_obj = Emp(id=id, name=name, age=age, salary=salary)
Session.add(emp_obj)
Session.commit()
Session.close()

2.查

依次按照id age salary 升序排序,使用query().order_by()

all_emp = Session.query(Emp).order_by(Emp.id.asc(),Emp.age.asc(),Emp.salary.asc()).all()

3.改

用filter().update({:})

Session.query(Emp).filter(Emp.id == id).update({"salary": salary})

4.删

用query().filter().delete()删除

Session.query(Emp).filter(Emp.id == id).delete()

代码如下:

import sqlalchemy
import pymysql
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://cp328:cP+86743175@localhost/test",
                       encoding='utf8')

Base = declarative_base()  # 生成orm基类


class Emp(Base):
    __tablename__ = 'Emp'  # 表名
    id = Column(String(32), primary_key=True)
    name = Column(String(32))
    age = Column(String(64))
    salary = Column(String(64))
Base.metadata.create_all(engine)  # 创建表结构





class Emphelper(object):
    def new_built(self):
        print("=================新建员工=============================\n")
        Session_class = sessionmaker(bind=engine)
        Session = Session_class()

        id = input("工号:")
        name = input("姓名:")
        age = input("年龄:")
        salary = input("工资:")
        emp_obj = Emp(id=id, name=name, age=age, salary=salary)
        Session.add(emp_obj)
        Session.commit()
        Session.close()
        print("保存成功")

    def check(eelf):
        print("==================查看================================\n")
        Session_class = sessionmaker(bind=engine)
        Session = Session_class()
        all_emp = Session.query(Emp).order_by(Emp.id.asc(),Emp.age.asc(),Emp.salary.asc()).all()
        print("工号(id)   名字(name)   年龄(age)     工资(salary)\n")
        for emp in all_emp:
            print(emp.id,"       ",emp.name,"         ", emp.age, "          ", emp.salary,"\n")
        Session.close()

    def revise(self):
        print("==================修改================================\n")
        Session_class = sessionmaker(bind=engine)
        Session = Session_class()
        id = input("输入要修改的工号:")
        if Session.query(Emp).filter_by(id = id).first() == None:
            print("查无此人")
        else:
            salary = input("输入修改后的工资:")
            Session.query(Emp).filter(Emp.id == id).update({"salary": salary})
        Session.commit()
        Session.close()

    def delete(self):
        print("==================删除================================\n")
        Session_class = sessionmaker(bind=engine)
        Session = Session_class()
        id = input("输入要删除元的工号:")
        if Session.query(Emp).filter_by(id = id).first() == None:
            print("查无此人")
        else:
            Session.query(Emp).filter(Emp.id == id).delete()
            print("删除成功")
        Session.commit()
        Session.close()


work = Emphelper()
while True:
    print("---------------------------------------------------------------\n")
    print("1)新建员工         2)查看        3)修改        4)删除     5)退出\n")
    print("===============================================================\n")
    choice = input("请输入")


    if choice == '1':
        work.new_built()

    if choice == '2':
        work.check()

    if choice == '3':
        work.revise()

    if choice == '4':
        work.delete()

    if choice == '5':
        break

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值