python操作mysql_update set %s=%s where start=%s-程序员宅基地

技术标签: Python  

import pymysql
'''
需求:
有以下员工信息表

CREATE TABLE EmployeeInfo (
  staff_id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) COLLATE utf8_bin DEFAULT NULL,
  age int(11) DEFAULT NULL,
  phone varchar(255) COLLATE utf8_bin DEFAULT NULL,
  dept varchar(255) COLLATE utf8_bin DEFAULT NULL,
  enroll_date datetime DEFAULT NULL,
  PRIMARY KEY (`staff_id`)
)

现需要对这个员工信息表,实现增删改查操作

可进行模糊查询,语法至少支持下面3种:
  select name,age from staff_table where age > 22
  select  * from staff_table where dept = "IT"
    select  * from staff_table where enroll_date like "2013"
查到的信息,打印后,最后面还要显示查到的条数
可创建新员工纪录,以phone做唯一键,staff_id需自增
可删除指定员工信息纪录,输入员工id,即可删除
可修改员工信息,语法如下:
  UPDATE staff_table SET dept="Market" WHERE where dept = "IT"

'''



#连接sql
def connMySql(host,user,password,db,charset,*sqlStatement):
    # 数据库连接
    conn = pymysql.connect(
        host=host,
        user=user,
        password=password,
        db=db,
        charset=charset,
    )
    #使用cursor()方法获取操作游标
    cursor = conn.cursor()


    sqlStatement_len = len(sqlStatement)-1
    results = []
    result_count = 0
    i = 0
    if i<=sqlStatement_len:
        for j in sqlStatement:

            i+=1
            # 使用execute方法执行SQL语句
            a=cursor.execute(j)
            # 使用 fetchone() 方法获取一条数据
            results_line = cursor.fetchall()
            #print('line-->',results_line)
            results.append(results_line)
            #print('results-->',results)
            conn.commit()

    for i in results:
        result_count += len(i)
        #print("result_count--->",result_count)
    print("查到的总条数为:%s"%result_count)

    conn.close()

    return results




def deleteEmployeeInfo(staff_id):
    deleteEmployeeInfoSql = 'delete from EmployeeInfo where staff_id = %s' %staff_id
    print(deleteEmployeeInfoSql)
    return deleteEmployeeInfoSql
#deleteEmployeeInfo(1)


def updateEmployeeInfo(modifiedField,modifiedFieldValue,conditionField,conditionFieldValue):
    updateEmployeeInfoSql = "update EmployeeInfo set %s=%s WHERE  %s = '%s'"%(modifiedField,modifiedFieldValue,conditionField,conditionFieldValue)
    #print(updateEmployeeInfoSql)
    return updateEmployeeInfoSql
#updateEmployeeInfo('phone','15652940958','name','jock')

sql_createTable = """
CREATE TABLE EmployeeInfo (
  staff_id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) COLLATE utf8_bin DEFAULT NULL,
  age int(11) DEFAULT NULL,
  phone varchar(255) COLLATE utf8_bin DEFAULT NULL,
  dept varchar(255) COLLATE utf8_bin DEFAULT NULL,
  enroll_date datetime DEFAULT NULL,
  PRIMARY KEY (`staff_id`)
)
"""
sql_queryByAge = 'select name,age from EmployeeInfo where age > 22'
sql_queryByDept='select  * from EmployeeInfo where dept = "IT"'
args = '%%'+'2018'+'%%'
sql_queryByEnrollDate = """select  * from EmployeeInfo where enroll_date like '%s' """%args
sql_addEmployeeInfo = 'insert into EmployeeInfo(name,age,phone,dept,enroll_date) VALUES ("Alex",20,"15330015692","IT","2018-10-11"),("jock",19,"153300121209","HR","2017-06-18"),("tom",28,"15330059254","Sales","2017-10-11"),("jexi",21,"15338912120","IT","2018-10-11") '


#调用函数方法
results = connMySql('192.168.0.75','writedafy','writeDafy!@#$','PT','utf8',updateEmployeeInfo('phone','15652940969','name',"jock"))
print(results)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/niuwenying_123/article/details/103054360

智能推荐

CentOS7配置本地yum源 和yum源服务器_failure: repodata/6d0c3a488c282fe537794b5946b01e28-程序员宅基地

文章浏览阅读1.5k次。CentOS7配置本地yum源 和yum源服务器_failure: repodata/6d0c3a488c282fe537794b5946b01e28c7f44db79097bb06826e1c0c88

结合语义不变量的点线立体视觉SLAM系统_tartanair-程序员宅基地

文章浏览阅读191次。作者:鱼骨 | 来源:3D视觉工坊在公众号「3D视觉工坊」后台,回复「原论文」即可获取论文pdf。添加微信:dddvisiona,备注:SLAM,拉你入群。文末附行业细分群。摘要传统的同步定位与制图(SLAM)系统使用环境的静态点作为实时定位和制图的特征。当可用的点特征很少时,系统很难实现。一个可行的解决方案是引入线特征。在包含丰富线段的复杂场景中,线段的描述差别不大,这可能导致线段数据的不正确..._tartanair

Python应用与实践_"列表names=(\"dave\",(mark,ann))"-程序员宅基地

文章浏览阅读2.3k次。Python应用与实践_"列表names=(\"dave\",(mark,ann))"

vim 全局批量替换-程序员宅基地

文章浏览阅读53次。:from,tos/old/new/gfrom是起始行to是终止行用$表示到文件最后一行s是替换的意思old是想被替换的文本new是你的新文本g表示全局例如::1,$s/yanyan/amy/g就是将一个文件的第一行到最后一行,也就是整个文件的yanyan这个字串替换成amy..._在vi下面把所有127.0.01替换为192.168.31.1

swing快速入门(三十五)选项对话框-程序员宅基地

文章浏览阅读720次,点赞26次,收藏7次。注释很详细,直接上代码……

Android Studio制作简单登录界面_studio如何做登录页面-程序员宅基地

文章浏览阅读1k次,点赞43次,收藏13次。应用线性布局设计登录界面,要求点击输入学号时弹出数字键盘界面,点击输入密码时弹出字母键盘,出现的文字、数字、尺寸等全部在values文件夹下相应.xml文件中设置好,使用时直接引用。当用户名或密码为空,显示一个提示信息“用户名与密码不能为空!”,当用户名和密码匹配,显示“登录成功”。_studio如何做登录页面

随便推点

AV1 码流分析器的搭建_av1码流分析工具-程序员宅基地

文章浏览阅读2.3k次。作为HEVC比较热门的继承者,AOM推进的AV1在2018年进入了大家的视野。研究AV1的新编码工具离不开一个强大的码流分析工具。AOM 得益于开源社区的贡献,其码流分析工具也在同步的推出,给研究AV1新编码工具的小伙伴带来省去不少麻烦。本文主要简单介绍一下如何搭建一个本地的AV1码流分析工具以及在大家过程中遇到的问题。1. AV1码流分析工具简单介绍AV1码流分析工..._av1码流分析工具

Vue兄弟组件间传值 之 事件总线,八年Web前端开发心路历程-程序员宅基地

文章浏览阅读365次,点赞3次,收藏5次。其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)《前端开发四大模块核心知识笔记》最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

一看就会的Jenkins实现Git提交后自动化构建详解_jenkins构建是构建自己提交的部分吗-程序员宅基地

文章浏览阅读4.3k次。Git hook自动触发构建利用 Github 的 webhook 实现代码 push 到仓库,立即触发 Jenkins 项目自动构建安装需要的两个插件:Gitlab Hook 和 GitLab一、在GitHub 上设置 tokensSettings -> Developer settings -> 选择Personal access tokens -> 创建新的 t..._jenkins构建是构建自己提交的部分吗

百分点10周年乔迁新址 数据智能服务更上一层楼-程序员宅基地

文章浏览阅读160次。戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹2019年8月,是百分点值得纪念和庆祝的日子,随着百分点团队的迅速扩大与蓬勃发展,全国各地业务开展的有声有色,业绩快速增..._百分点 公司新址

RK1126平台项目总结_rk1126 osd叠加-程序员宅基地

文章浏览阅读982次。RK1126平台_rk1126 osd叠加

约瑟夫环的三种解法(C语言),数组+链表+递归_c语言约瑟夫环问题-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏24次。问题描述:有n人围成一圈,顺序排号。从第1个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来的第几号的那位。(一)数组实现:#include<stdio.h>#include<stdlib.h>int main(){ int n,m;//共n个人,数到m出局 int out=0,k=0,i; scanf("%d%d",&n,&m); int a[n]; for(i=0;i<n;i++)//初始化为0,为1表示已出局 _c语言约瑟夫环问题