文档章节

Python 学习笔记 - 操作MySQL

乐搏学院
 乐搏学院
发布于 2017/03/30 15:18
字数 905
阅读 4
收藏 0

Python里面操作MySQL可以通过两个方式:

  1. pymysql模块

  2. ORM框架的SQLAchemey

 

本节先学习第一种方式。

 

学习Python模块之前,首先看看MySQL的基本安装和使用,具体语法可以参考豆子之前的博客http://beanxyz.blog.51cto.com/5570417/1609972

或者官方简介

https://mariadb.com/kb/en/mariadb/basic-sql-statements/

 

简单的回顾一下基本环境的搭建:

 

首先安装Mariadb(我的环境是CentOS7)

1

2

yum install mariadb*

systemctl start mariadb

配置防火墙

1

2

firewall-cmd --add-port=3306/tcp --permanent

systemctl restart firewalld

配置root密码

1

2

mysqladmin -u root password 'mysql'

mysql -uroot -p

 

创建一个测试用的数据库和表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

MariaDB [(none)]> create database mydb;

Query OK, 1 row affected (0.00 sec)

 

MariaDB [(none)]> use mydb

Database changed

MariaDB [mydb]> create table student(id int not null auto_increment,name varchar(10), primary key(id));

Query OK, 0 rows affected (0.04 sec)

 

MariaDB [mydb]> insert into student(name) values('Jay'),('Bob'),('Alex');

Query OK, 3 rows affected (0.00 sec)

Records: 3  Duplicates: 0  Warnings: 0

 

MariaDB [mydb]> select * from student;

+----+------+

id | name |

+----+------+

|  1 | Jay  |

|  2 | Bob  |

|  3 | Alex |

+----+------+

3 rows in set (0.00 sec)

 

创建一个远程访问的账户

1

2

3

4

5

6

MariaDB [(none)]> create user yli@10.2.100.60;

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> set password for yli@'10.2.100.60'=password('yli');

Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all privileges on mydb.* to yli@10.2.100.60;

Query OK, 0 rows affected (0.00 sec)

 

然后安装一个图形界面的工具Navicat,绑定数据库

wKioL1gij7nxF_w0AADPQRGw3qE012.png

wKiom1gij7rh9UoaAADlgxB33VI628.png

 

这样一个基本的测试环境就搭建好了。

 

现在来看看pymysql的使用。

 

在我的客户端安装一下pymysql的模块

1

2

3

4

5

6

C:\WINDOWS\system32>pip install pymysql

Collecting pymysql

  Downloading PyMySQL-0.7.9-py3-none-any.whl (78kB)

    100% |################################| 81kB 610kB/s

Installing collected packages: pymysql

Successfully installed pymysql-0.7.9

 

Python源码演示

 

查询

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

#打开数据库连接

conn = pymysql.connect(host='sydnagios', port=3306, user='yli', passwd='yli', db='mydb')

#创建一个游标对象

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

#SQL查询

cursor.execute("select * from student")

# 获取第一行数据

# row_1 = cursor.fetchone()

# print(row_1)

# 获取前n行数据

# row_2 = cursor.fetchmany(3)

# 获取所有数据

row_3 = cursor.fetchall()

print(row_3)

#scroll可以使用相对位置或者绝对位置,这里相对位置(末尾)向上移动2行

cursor.scroll(-2,mode='relative')

row_3 = cursor.fetchall()

print(row_3)

#提交,不然无法保存新的数据

conn.commit()

#关闭游标

cursor.close()

#关闭连接

conn.close()

-----------

[{'id'1'name''Jay'}, {'id'2'name''Bob'}, {'id'3'name''Alex'}]

[{'id'2'name''Bob'}, {'id'3'name''Alex'}]

 

修改

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

conn = pymysql.connect(host='sydnagios', port=3306, user='yli', passwd='yli', db='mydb')

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

cursor.execute("Update student set name='BoB' where id=2")

cursor.execute("select * from student")

row_3 = cursor.fetchall()

print(row_3)

conn.commit()

cursor.close()

conn.close()

----------

[{'id'1'name''Chris'}, {'id'2'name''BoB'}, {'id'3'name''Alex'}]

 

删除

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

conn = pymysql.connect(host='sydnagios', port=3306, user='yli', passwd='yli', db='mydb')

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

cursor.execute("delete from student where id=2")

cursor.execute("select * from student")

row_3 = cursor.fetchall()

print(row_3)

conn.commit()

cursor.close()

conn.close()

----------

[{'id'1'name''Chris'}, {'id'2'name''BoB'}, {'id'3'name''Alex'}]

 

添加

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

conn = pymysql.connect(host='sydnagios', port=3306, user='yli', passwd='yli', db='mydb')

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

cursor.execute("insert into student(name) value ('ZhangSan'),('LiSi')")

cursor.execute("select * from student")

row_3 = cursor.fetchall()

print(row_3)

conn.commit()

cursor.close()

conn.close()

----------

[{'name''Chris''id'1}, {'name''Alex''id'3}, {'name''ZhangSan''id'4}, {'name''LiSi''id'5}]

 

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

 

本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1871039

© 著作权归作者所有

乐搏学院
粉丝 9
博文 526
码字总数 707467
作品 0
丰台
程序员
私信 提问
21个Python免豆资料下载地址汇总

为了方便大家学习,小弟最近整理了一批免豆下载的Python资料,共21个,整理了这批资料的下载地址,大家可以根据自己的需要选择性下载。希望大家喜欢~ Python灰帽子中文 http://down.51cto.co...

IT小白白
2012/07/30
211
0
python资料全集

python: 微信公众号开发小记——2.80端口上的服务 python: 微信公众号开发小记——3.接入三方登录 使用python编写一个壁纸网站的简单爬虫 python: python List 用法 Python 中各个时间复杂度...

d_watson
2016/04/15
185
0
Python模块详解

Python为开发人员提供了丰富的模块,通过这些模块,我们就可快速开发出功能强大的程序。本笔记记录我所接触或学习过的Python模块,为想学习Python的朋友提供一个参考。 Table of Contents 1....

长平狐
2012/09/20
3K
0
Python爬虫原理详解 简单易懂

什么是Python爬虫?Python爬虫原理是什么?Python爬虫代码是如何实现的?码笔记分享Python介绍及爬虫原理详解: 什么是Python爬虫? 我们可以把互联网看成是各种信息的站点及网络设备在一起组...

张扯淡
07/26
0
0
Mac 之xampp 安装MySQLdb【非Pip安装】

刚学习python,到数据库这块,需要安装一个MySQLdb。记录下碰到的问题~~~ 我的环境:Mac High Sierra 10.13.6 + python 2.7 + XAMPP。 特此说明:以下安装只针对本机以及本人碰到的问题,不一...

干干
2018/09/10
79
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
7
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部