3.pymysql的应用

使用pip安装PyMysql模块

  • 安装依赖包
    • yum install -y gcc
  • 本地安装
    • pip3 install PyMySQL-0.8.0.tar.gz
  • 在线安装(建议使用国内镜像站点)
    • mkdir ~/.pip
    • vim ~/.pip/pip.conf
      [global]
      index-url = http://mirrors.163.com/pypi/simple
      [install]
      trusted-host = mirrors.163.com
    • 在虚拟环境中安装pymysql
      • 创建虚拟环境
        python3 -m venv ~/mypy
      • 激活虚拟环境
        source ~~/mypy/bin/activate
        pip3 install pymysql
        或 pip3 install pymysql==0.9.2 #安装指定版本的pymysql

pymysql的应用

  • 实现效果
    • 连接数据库,实现CRUD
  • 准备数据库
    • 员工信息表:工号,姓名,出生日期,电话,email,部门ID
    • 部门表:部门ID,部门名
    • 工资表:ID号,工资日,工号,基本工资,绩效
    • 在数据库服务器增加授权用户,如:
    grant all on test.* to root@'%' identified by 'a'
    
  • 创建到数据库服务器的连接
    import pymysql
    conn = pymysql.connect(
    host = '192.168.1.10',
    port = 3306,
    user = 'root',
    passwd = 'a',
    db = 'test',
    charset = 'utf8'
    )
    
  • 创建游标.可以理解游标就是打开文件时返回的文件对象,用过游标可以执行sql语句,对数据库进行CRUD(增删改查)
    cursor = conn.cursor()
    
  • 编写sql语句(创建表)
    create_dep = '''CREATE TABLE departments(
    dep_id INT,        #部门ID
    dep_name VARCHAR(20),  #部门名
    PRIMARY KEY(dep_id)    #根据1NF,每个表中都要有主键
    )'''
    create_emp = '''CREATE TABLE employees(
    emp_id INT,
    emp_name VARCHAR(20),
    birth_date DATE,
    phone VARCHAR(11),
    email VARCHAR(50),
    dep_id INT,
    PRIMARY KEY(emp_id),
    FOREIGN KEY(dep_id) REFERENCES   departments(dep_id)     #创建外键
    )'''
    create_sal = '''CREATE TABLE salary(
    id INT,
    date DATE,
    emp_id INT,
    basic INT,
    awards INT,
    PRIMARY KEY(id),
    FOREIGN KEY(emp_id) REFERENCES employees(emp_id)
    )'''
    
  • 执行sql语句
    cursor.execute(create_dep)
    cursor.execute(create_emp)
    cursor.execute(create_sal)
    
  • 确认
    conn.commit()
    
  • 关闭游标和连接
    cursor.close()
    conn.close()
    

编写CRUD语句

  • 向部门表中插入数据
    import pymysql
    conn = pymysql.connect(    #连接到数据库
      host = '192.168.1.10',
      port = 3306,
      user = 'root',
      passwd = 'b',
      db = 'ceshi',
      charset = 'utf8'
    )
    cursor = conn.cursor()    #创建游标
    insert_dep = 'insert into departments VALUES (%s, %s)'  #先用%s,%s占位
    hr = (1, '人事部')
    ops = (2, '运维部')
    dev = (3, '开发部')
    qa = (4, '测试部')
    market = (5, '市场部')
    finance = (6, '财务部')
    salas = (7, '销售部')
    deps = [hr, ops, dev, qa, market, finance, sales]
    cursor.executemany(insert_dep, deps) #一次插入多次数据
    conn.commit()    #增删改都需要确认
    cursor.close()    #程序运行完成,要断开连接
    conn.close()
    
  • 删除销售部
    del_dep = 'delete from departments where dep_name=%s'
    cursor.execute(del_dep, ('销售部',))  #execute()接收的参数是元组,单元素元组后要加 逗号
    
  • 修改
    update_dep = 'update departments set dep_name = %s where dep_name = %s'
    cursor.execute(update_dep, ('人力资源部', '人事部'))
    
  • 查询(不需要commit确认)
    #查询
    query_dep = 'select * from departments'
    #执行sql语句
    cursor.execute(query_dep)
    #取数据
    result = cursor.fetchone()
    print(result)
    
  • 使用游标来查询
    query_dep = 'select * from departments'
    cursor.execute(query_dep)
    cursor.scroll(3, mode = 'absolute')  #必须从头开始数,进行移动
    cursor.scroll(1)  #默认以相对位置移动,即相对当前位置移动
    

以上代码,如有出错,请严厉指出,不用客气,谢谢

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容