1.PyMySQL安装

1.1通过pypi安装PyMySQL模块

• pypi即python package index

• 是python语言的软件仓库通过pip安装PyMySQL模块

• 官方站点为https://pypi.python.org

方法一:官网下载安装包,本地安装

[root@miss ~]#yum install -y gcc //安装依赖包

[root@miss ~]#pip3 install PyMySQL-0.9.0.tar.gz

方法二:在线安装

[root@miss ~]#pip3 install pymysql

方法三:使用国内镜像站点,为了实现安装加速,可以配置pip安装时采用国内镜像站点

[root@miss ~]#mkdir ~/.pip/

[root@miss ~]#vim ~/.pip/pip.conf

[global]

index-url=http://pypi.douban.com/simple/

[install]

trusted-host=pypi.douban.com

1

2

3

4

5

6

7

8

9

10

11

12

13

14

2.PyMySQL应用

2.1 连接数据库

• 创建连接是访问数据库的第一步

conn=pymysql.connect(host=’127.0.0.1’,port=3306,user=’root’,passwd=’123456’, db=’db1’, charset=’utf8’)

2.2 游标

• 游标(cursor)就是游动的标识

• 通俗的说,一条sql取出对应n条结果资源的接口/句柄,就

是游标,沿着游标可以一次取出一行

cursor = conn.cursor()

2.3 插入数据

• 对数据库表做修改操作,必须要commit

sql1 = “insert into departments(dep_name) values(%s)”

result = cur.execute(sql1, (‘development’,))

sql2 = “insert into departments(dep_name) values(%s)”

data = [(‘hr’,), (‘op’,)]

result = cur.executemany(sql2, data)

sql3 = “insert into departments(dep_name) values(%s)”

data = [(‘行政’,), (‘财务’,), (‘运营’,)]

result = cur.executemany(sql3, data)

conn.commit()

2.4查询数据

• 可以取出表中一条、多条或全部记录

sql4 = “select * from departments”

cur.execute(sql4)

result = cur.fetchone()

print(result)

result2 = cur.fetchmany(2)

print(result2)

result3 = cur.fetchall()

print(result3)

2.5移动游标

• 如果希望不是从头取数据,可以先移动游标

cur.scroll(1, mode=”rala\ve”)

cur.scroll(2, mode=”absolute”)

sql5 = “select * from departments”

cur.execute(sql5)

cur.scroll(3, mode=’absolute’)

result4 = cur.fetchmany(2)

print(result4)

2.6 修改数据

• 通过update修改某一字段的值

sql6 = “update departments set dep_name=%s where dep_name=%s”

result = cur.execute(sql6, (‘opera\ons’, ‘op’))

print(result)

conn.commit()

2.7 删除记录

• 通过delete删除记录

sql7 = “delete from departments where dep_id=%s”

result = cur.execute(sql7, (6,))

print(result)

conn.commit()

3.案例

发工资的数据库

姓名、性别、出生年月、部门、联系方式、员工编号、发工资日期、基本工资、奖金、总工资

第一范式(1NF):所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项

联系方式应该拆分为:住址、电话号码、email等

第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码

把字段放到不同的表里:

员工表:员工编号、姓名、性别、出生年月、部门ID、电话号码、email

部门表:部门ID、部门编号

工资表:autoid、员工编号、发工资日期、基本工资、奖金、总工资

第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

因为总工资是用基本工资和奖金算出来的,所以它不要出现在数据库表中

[root@miss ~]#mysql -uroot -p123456

MariaDB [(none)]> CREATE DATABASE db1 DEFAULT CHARSET='utf8';

MariaDB [(none)]> use db1;

MariaDB [db1]> CREATE TABLE departments

(dep_id INT, dep_name VARCHAR(20), PRIMARY KEY(dep_id));

MariaDB [db1]> CREATE TABLE employees

(emp_id INT, emp_name VARCHAR(20) NOT NULL, gender VARCHAR(6), email VARCHAR(50), dep_id INT, PRIMARY KEY(emp_id), FOREIGN KEY(dep_id) REFERENCES departments(dep_id));

MariaDB [db1]> CREATE TABLE salary

(auto_id INT AUTO_INCREMENT, date DATE, emp_id INT, basic INT, awards INT, PRIMARY KEY(auto_id), FOREIGN KEY(emp_id) REFERENCES employees(emp_id));

1

2

3

4

5

6

7

8

9

[root@miss ~]#cat mysql_data.py

import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8') # 创建到数据库的连接

cursor = conn.cursor() # 创建游标,相当于打开文件返回文件对象

insert_dep1 = 'INSERT INTO departments VALUES(%s, %s)'

# cursor.execute(insert_dep1, ('1', '人事部'))

insert_deps = [(2, '运维部'), (3, '开发部'), (4, '测试部')]

cursor.executemany(insert_dep1, insert_deps)

conn.commit() # 增删改都需要commit

cursor.close()

conn.close()

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@miss ~]#cat mysql_modify.py

import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8') # 创建到数据库的连接

cursor = conn.cursor() # 创建游标,相当于打开文件返回文件对象

insert_dep1 = 'UPDATE departments SET dep_name=%s WHERE dep_name=%s'

cursor.execute(insert_dep1, ('人力资源部', '人事部'))

delete1 = 'DELETE FROM departments WHERE dep_name=%s'

cursor.execute(delete1, ('测试部',))

conn.commit() #

cursor.close()

conn.close()

1

2

3

4

5

6

7

8

9

10

11

12

13

[root@miss ~]#cat mysql_query1.py

import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8') # 创建到数据库的连接

cursor = conn.cursor()

query1 = 'SELECT * FROM departments'

cursor.execute(query1)

r1 = cursor.fetchone()

print(r1)

print('#' * 20)

r2 = cursor.fetchmany(2)

print(r2)

print('#' * 20)

r3 = cursor.fetchall()

print(r3)

cursor.close()

conn.close()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[root@miss ~]#cat mysql_query2.py

import pymysql

conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='db1',charset='utf8') # 创建到数据库的连接

cursor = conn.cursor()

query1 = 'SELECT * FROM departments'

cursor.execute(query1)

# cursor.scroll(2, mode='absolute')

# r1 = cursor.fetchall()

# print(r1)

cursor.scroll(1, mode='absolute') # 以开头为起始点移动游标

cursor.fetchone() # 取出一行

cursor.scroll(1, mode='relative') # 以当前位置为参考点移动游标

r2 = cursor.fetchall() # 取出后续所有内容

print(r2)

cursor.close()

conn.close(

python pymysql模块下载_python开发11之PyMySQL模块相关推荐

  1. python主题壁纸下载_Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  2. python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备

    现在,我们已经知道如何在不同的操作系统中使用和安装Python以及如何使用EVE-NG搭建网络拓扑.在本章中,我们将学习如何使用目前常用的网络自动化库自动完成各种网络任务.Python可以在不同的网络 ...

  3. python常用包下载_Python及其常用模块库下载及安装

    一.Python下载: https://www.python.org/downloads/ 二.Python模块下载: http://www.lfd.uci.edu/~gohlke/pythonlib ...

  4. python 自定义模块加密_Python开发【第一篇】Python基础之自定义模块和内置模块...

    为什么要有模块,将代码归类.模块,用一砣代码实现了某个功能的代码集合. Python中叫模块,其他语言叫类库. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代 ...

  5. python xlrd模块下载_python xlrd模块介绍

    转载自:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一.安装xlrd模块 到python官网下载 二.使用介绍 1.导入 ...

  6. python视频网站项目_Python开发教育网站项目实例教学(105集视频课程含源码)

    Python开发教育网站项目实例教学(105集视频课程含源码)课程简介: Python开发教育网站项目实例教学(105集视频课程含源码)通过这105集Python实例视频课程的学习,学员可以掌握到使用 ...

  7. python 通用数据库类型_Python开发基础之Python常用的数据类型

    博文大纲 一.Python介绍 二.Python的变量 三.Python常用的数据类型 1.数字 2.字符串 3.元组 4.列表 5.字典 一.Python介绍 Python是一种动态解释型的编程语言 ...

  8. 用python画apc图_Python开发GUI实战:图片转换素描画工具!

    奋斗没有终点好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . ! 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己继 ...

  9. 跳一跳python源码下载_Python玩跳一跳【简】

    准备环境: Windows 10: [有] 安卓手机 [有] python(版本建议3以上) adb驱动 依赖安装包 Python下载安装[官网下载并安装] 详情参见 pip安装 pip用于安装依赖包 ...

  10. python网站框架下载_Python搭建网站框架

    1. 机器上安装python 在python官网下载python的2.7版本,然后一路next就可以安装了: 安装结束后,开启菜单会有python客户端,但是一般使用cmd命令行模式进行运行: 添加p ...

最新文章

  1. 云时代服务器端工程师必备 CDN 技能包
  2. String.format System.out.printf的用法-简单
  3. Kali Linux 2016.2初体验使用总结
  4. dos下打包整个java工程
  5. JavaScript实现TwoQueues缓存模型
  6. 陈睿:架构设计之数据库拆分六大原则
  7. bootstrap-table toolbar图标换文字_iPhone 也能随意换字体啦~
  8. 同一个浏览器打开不同端口的程序登录_【BI报表制作】单点登录与个性化开发...
  9. CYQ.Data 轻量数据层之路 华丽升级 V1.3出世(五)
  10. axure rp 8.1.0.3379 密钥license,Axure8.1中文破解版 8.1.0.3379 含授权码
  11. 加密 CryptoJS DES
  12. linux ext4限制,linux – 限制ext4文件系统中文件的最大大小
  13. 北京市小牛电动车选购指南
  14. django models filter查询条件
  15. html5怎么给标题居中,html5标题居中 Html5如何使div里面文字在水平垂直居中对齐...
  16. CSS 引入的三种方式
  17. jquery fullpage
  18. python快递费用计算_python调用快递鸟api实现查快递
  19. 移动架构之MVP框架
  20. 基于闪电连接过程优化算法的函数寻优算法

热门文章

  1. 记一次ARM服务器(鲲鹏920)的PXE批量装机遇到的坑
  2. php微信支付接口的流程图,php如何设计微信支付接口
  3. iOS 10 消息推送
  4. html form提交heard,德普前妻Amber Heard戛纳合辑
  5. java实现阳历农历节以及节假日日期计算
  6. 10首不可不读的苏轼“最”诗词,人间万事,不过如此!
  7. 测试工程师应如何渡过互联网寒冬
  8. 介绍一种超大文件高速传输解决方案
  9. Python 列表元素的排序
  10. 小米8 Goole Play 商店登录问题 | 正确爬山方式