[Python程序课程设计] 利用sqlalchemy封装mysql操作_cp0328的博客-程序员宅基地

技术标签: python  mysql  腾讯班  

在这里插入图片描述

在此之前,你需要自行安装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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caipengbenren/article/details/88536871

智能推荐

pku2352 Stars 线段树_weixin_30487317的博客-程序员宅基地

http://poj.org/problem?id=23521.没有注意读题 已经给好y的顺序排列,不用自己再sort了2.在使用qsort(a+1,num,sizeof(a[1]),cmp)要注意sizeof(a[1]) 还有cmp 要将const void*a 转换成 结构体先 再比较A.x B.x;3.一直TE;最后发现要读入x后要x++,这样子计算会...

javascript Date format(js日期格式化)_javascript 日期格式化_1米外的纯白_2016的博客-程序员宅基地

原文地址:https://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html方法一:// 对Date的扩展,将 Date 转化为指定格式的String// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占..._javascript 日期格式化

QTP整合QC自动化测试--目录结构搭建-程序员宅基地

以QC服务器的目录结构为主,进行目录的搭建。 如果我们能用一台电脑,指挥多台装了QTP的电脑运行脚本,岂不爽哉。Mercury公司开发的Quanlity Center(简称QC),就可以实现这个功能。要使用QC远程调用QTP,需要进行一系列的设置才能实现。在这篇文章里,我们把部署了QTP的电脑叫做“测试机”,把远程控制测试机的电脑叫做“控制台”,方便说明。在测试机装完QTP后,还要安装一个插件:T..._自动化测试工具qtp的目录结构

MyBatisPlus条件构造器 — QueryWrapper、LambdaQueryWrapper_lambdaquery 字段不为空_叶子#@的博客-程序员宅基地

MyBatisPlus条件构造器 — QueryWrapper、LambdaQueryWrapper_lambdaquery 字段不为空

C++sstream_c++ sstream_叫我莫言鸭的博客-程序员宅基地

#include <iostream>#include<stdio.h>#include<algorithm>#include<vector>#include<cstring>#include<sstream>#include<strstream>#include<queue>using..._c++ sstream

随便推点

关于C++缺省构造函数的讲解——精解_quesheng构造函数_瘦弱的皮卡丘的博客-程序员宅基地

构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行,构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。在这里有几点要注意的问题:构造函数在实例化对象时自动被调用,且在每个对象的生命期仅被调用一次。可以被重载。若程序员没有主动给类定义构造函数,编译器自动给一个缺省的构造函数。一旦程序员定..._quesheng构造函数

IDEA中使用jstl标签库_jstl-1.2.jar和standard-1.1.2.jar-程序员宅基地

在mvn库中下载两个jar包:jstl-1.2.jar和standard-1.1.2.jar包第一步:点击下载jstl-1.2.jar, standard-1.1.2.jar第二步:打开IDEA,将两个jar包引入到WEB-INF目录下的lib文件中,第三步:在idea的设置中添加引用,如下图所示,在URI中添加http://java.sun.com/jsp/jstl/..._jstl-1.2.jar和standard-1.1.2.jar

Android多用户原理_getmaxnumberofuserssupported_Want0629的博客-程序员宅基地

android从4.2开始便添加了多用户功能,其具体的管理者为UserManager.多用户模式的启用系统判断当前设备是否支持多用户模式的依据是配置文件config.xml 中的config_multiuserMaximumUsers 和config_enableMultiUserUI 配置项。[html] view plain copy&lt;!-- Maximum number of sup..._getmaxnumberofuserssupported

spark运行报错:java.io.IOException: Connection reset by peer_exception in connection from spark java.io.ioexcep-程序员宅基地

大神们,请看下这个错误!!!2019-01-02 15:43:55 [ rpc-server-3-3:318175 ] - [ WARN ] Exception in connection from /10.216.44.41:56770java.io.IOException: Connection reset by peer at sun.nio.ch.FileDisp..._exception in connection from spark java.io.ioexception: connection reset by

朴素贝叶斯(Native Bayes)法简述_suibianshen2012的博客-程序员宅基地

1.1、摘要 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,介绍贝叶斯分类算法的基础——贝叶斯定理。最后,通过实例讨论贝叶斯分类中最简单的一种:朴素贝叶斯分类。1.2、分类问题综述 对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行_native bayes

大数据基准测试工具HiBench部署与测试_Faith_xzc的博客-程序员宅基地

本文介绍了大数据基准测试工具HiBench的部署,并进行了测试。欢迎大家交流讨论!_hibench

推荐文章

热门文章

相关标签