python3操作mysql需要先安装PyMySQL

pip install PyMySQL

在linux登录mysql ,并且在安装数据库时设置了数据库的用户名“root”和密码“root”,mysql安装的版本为mysql5.7

[root@web ~]# mysql -uroot -p -h192.168.10.100

在mysql里面创建一个mysql库

mysql> create database mrsoft;
Query OK, 1 row affected (0.00 sec)

下面是新建一个py文件远程创建一个mysql连接,下面通过connect()方法连接MySQL数据库mrsoft,具体代码如下:

import pymysql

#   打开数据库连接, 参数1:主机名或者ip;参数2:用户名;参数3:密码;参数4:数据库名称;参数5:用utf8格式打开数据库表防止出现中文乱码
db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor() # 使用execute()方法执行SQL查询
cursor.execute("SELECT VERSION()") # 使用fetchone()方法获取单条数据
data = cursor.fetchone() print("Database version : %s" % data) # 关闭数据库连接
db.close()

1、创建一个books测试图书表

  #books表包含id(主键)、name(图书名称),category(图书分类),price(图书价格)和publish_time(出版时间)5个字段。创建books图表的SQL如下:

mysql> CREATE TABLE books (
-> id int(8) NOT NULL AUTO_INCREMENT,
-> name varchar(50) NOT NULL,
-> category varchar(50) NOT NULL,
-> price decimal(10,2) DEFAULT NULL,
-> publish_time date DEFAULT NULL,
-> PRIMARY KEY (id)
-> )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

  #在创建数据库表前,先在数据库里面使用如下语句;

mysql> DROP TABLE IF EXISTS `books`;
Query OK, 0 rows affected (0.00 sec)

  #如果mysoft数据库中已经存在books,那么先删除books,然后再创建books数据库表。

import pymysql

#   打开数据库连接
db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor() # 使用 execute()方法执行SQL, 如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS books") # 使用预处理语句创建表
sql = """
CREATE TABLE books (
id int(8) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
category varchar(50) NOT NULL,
price decimal(10,2) DEFAULT NULL,
publish_time date DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; """ # 执行SQL语句
cursor.execute(sql) # 关闭数据库连接
db.close()

  #运行后在数据库里面查看如下:

mysql> show tables;
+------------------+
| Tables_in_mrsoft |
+------------------+
| books |
+------------------+
1 row in set (0.00 sec) mysql> desc books;
+--------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+----------------+
| id | int(8) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| category | varchar(50) | NO | | NULL | |
| price | decimal(10,2) | YES | | NULL | |
| publish_time | date | YES | | NULL | |
+--------------+---------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

  #向books图书表中插入图书数据时,可以使用excute()方法添加一条记录,也可以使用executemany()方法批量添加多条记录,executemany()方法的语法格式如下:

    executemany(operation,  seq_of_params)

      operation:操作的SQL语句。

      seq_of_params: 参数序列。

import pymysql

#   打开数据库连接
db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor() data = [
("零基础学python",'Python','79.80','2019-09-15'),
("python从入门到精通", 'Python', '69.80', '2018-09-15'),
("零基础学JAVA", 'JAVA', '89.80', '2017-09-15'),
("零基础学GO", 'GO', '79.80', '2019-05-15'),
("零基础学PHP", 'PHP', '69.80', '2015-09-15'),
] # 使用预处理语句创建表
try:
# 执行sql语句,插入多条数据,在使用insert语句插入数据时,使用%s作为占位符,可以防止SQL注入
cursor.executemany("insert into books(name, category, price, publish_time) values (%s, %s, %s, %s)", data)
# 提交数据
db.commit()
except:
# 发生错误时回滚
db.rollback() # 关闭数据库连接
db.close()
mysql> select * from books;
+----+--------------------------+----------+-------+--------------+
| id | name | category | price | publish_time |
+----+--------------------------+----------+-------+--------------+
| 1 | 零基础学python | Python | 79.80 | 2019-09-15 |
| 2 | python从入门到精通 | Python | 69.80 | 2018-09-15 |
| 3 | 零基础学JAVA | JAVA | 89.80 | 2017-09-15 |
| 4 | 零基础学GO | GO | 79.80 | 2019-05-15 |
| 5 | 零基础学PHP | PHP | 69.80 | 2015-09-15 |
+----+--------------------------+----------+-------+--------------+
5 rows in set (0.00 sec)

  #数据库批量插入操作如下:

import pymysql

#   打开数据库连接
db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor() # 创建sql语句
sql = "insert into books(name, category, price, publish_time) values (%s, %s, %s, %s)" # 创建一个用于存放sql插入数据的列表
data = [] employ1 = ("零基础学python1",'Python1','79.80','2019-09-15')
employ2 = ("零基础学python2",'Python2','79.80','2019-09-15')
employ3 = ("零基础学python3",'Python3','79.80','2019-09-15')
employ4 = ("零基础学python4",'Python4','79.80','2019-09-15') #添加数据到列表
data.append(employ1)
data.append(employ2)
data.append(employ3)
data.append(employ4) # 使用预处理语句创建表
try:
# 执行sql语句,插入多条数据
cursor.executemany(sql, data)
# 提交数据
db.commit()
except:
# 发生错误时回滚
db.rollback() # 关闭数据库连接
db.close()
mysql> select * from books;
+----+--------------------------+----------+-------+--------------+
| id | name | category | price | publish_time |
+----+--------------------------+----------+-------+--------------+
| 1 | 零基础学python | Python | 79.80 | 2019-09-15 |
| 2 | python从入门到精通 | Python | 69.80 | 2018-09-15 |
| 3 | 零基础学JAVA | JAVA | 89.80 | 2017-09-15 |
| 4 | 零基础学GO | GO | 79.80 | 2019-05-15 |
| 5 | 零基础学PHP | PHP | 69.80 | 2015-09-15 |
| 6 | 零基础学python1 | Python1 | 79.80 | 2019-09-15 |
| 7 | 零基础学python2 | Python2 | 79.80 | 2019-09-15 |
| 8 | 零基础学python3 | Python3 | 79.80 | 2019-09-15 |
| 9 | 零基础学python4 | Python4 | 79.80 | 2019-09-15 |
+----+--------------------------+----------+-------+--------------+
9 rows in set (0.01 sec)

  #python查询MySQL使用fetchone()方法获取单条数据,使用fetchall()方法获取多条数据

    fetchone():该方法获取下一个查询结果集。结果集是一个对象。

    fetchall():接受全部的返回结果行。

    rowcount:这是一个只读属性,并返回执行execute()方法后影响的行数。

import pymysql

#   打开数据库连接
db = pymysql.connect("192.168.10.100", "root", "root", "mrsoft", charset="utf8") # 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor() sql = "SELECT * FROM books WHERE price > '%d'" % (79) # 使用预处理语句创建表
try:
# 执行sql语句,查询数据
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
id = row[]
name = row[]
category = row[]
price = row[]
publish_time = row[] # 打印结果 print("id=%d,name=%s,category=%s,price=%s,publish_time=%s" % (id, name, category, price, publish_time))
except Exception as e:
print(e) # 无论是否有异常都执行
finally:
# 关闭数据库连接
db.close()

id=1,name=零基础学python,category=Python,price=79.80,publish_time=2019-09-15
id=3,name=零基础学JAVA,category=JAVA,price=89.80,publish_time=2017-09-15
id=4,name=零基础学GO,category=GO,price=79.80,publish_time=2019-05-15
id=6,name=零基础学python1,category=Python1,price=79.80,publish_time=2019-09-15
id=7,name=零基础学python2,category=Python2,price=79.80,publish_time=2019-09-15
id=8,name=零基础学python3,category=Python3,price=79.80,publish_time=2019-09-15
id=9,name=零基础学python4,category=Python4,price=79.80,publish_time=2019-09-15

python3操作PyMySQL笔记的更多相关文章

  1. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  2. Python3操作MySQL基于PyMySQL封装的类

    Python3操作MySQL基于PyMySQL封装的类   在未使用操作数据库的框架开发项目的时候,我们需要自己处理数据库连接问题,今天在做一个Python的演示项目,写一个操作MySQL数据库的类, ...

  3. python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容

    python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...

  4. python专题-Mysql数据库(python3._+ PyMysql)

    之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 Python2 ---> Python3 MySQLdb ...

  5. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  6. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  7. Mysql存储之原生语句操作(pymysql)

    Mysql存储之原生语句操作(pymysql) 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表时实现的,于是构成了行列的表结构. 表可以看作是某个实体的集合,而实体之间存在联系,这个就需要 ...

  8. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  9. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

随机推荐

  1. 字符串和While循环

    字符串是以单引号或双引号括起来的任意文本 创建字符串 str1 = "shaoge is a good man!" 字符串运算 字符串连接 str6 = "shaoge ...

  2. C++ 动态加载 DLL 时,GetProcAddress() 返回 NULL,GetLastError() 获取错误代码为 127

    1.问题现象: 采用“运行期间动态链接”自己的 dll 文件,LoadLibrary() 成功获取 dll 模块句柄,但是 GetProcAddress() 返回 NULL. 2.问题分析: 调用 G ...

  3. form提交时accept-charset属性在IE及Edge下不起作用解决方案

    问题描述 我的页面是utf-8编码 目标页面是EUC-JP编码 即使已经设置了accept-charset="EUC-JP",提交后IE 和 Edge下还是乱码 解决方案: 1. ...

  4. Channel 9视频整理【2】

    JadeChang https://channel9.msdn.com/Niners/JadeChang 繁体中文视频 2016 Nano Server / Docker / Containers 打 ...

  5. Android1_运行第一个AS项目HelloWorld

    一.开发安卓程序需要具备一些开发工具,这里简单罗列一下: JDK :这是Java语言的开发工具包,包含了Java的运行环境.工具集合.基础类库等内容. Android Studio:目前主流的安卓开发 ...

  6. Vijos1917 艾酱最喜欢的数字 [求绝对众数]

    1.题意:第一行一个数字N,表示一共有多少个数字,第二行N个数字,保证其中至少有一个数字出现次数超过一半,任务是求出这个出现最多的数. 2.分析:本题是明显的求众数的问题,常规思路为开一个大数组,在读 ...

  7. ssh 简写

    << remotessh remotessh 这一对之间,可以写多个命令,换行即可. 否者就简单的 双引号,里面每个命令用分号隔开. 注意: 在远程服务器上的执行权限. 注意:login密 ...

  8. python常见关键字的使用

    常见关键字 在循环中常见的关键字使用方法 continue:结束本次循环,继续执行下一次循环 break:跳出一个循环或者结束一个循环 例 使用用户名密码登录(有三次机会)count=0while c ...

  9. 聊聊多线程哪一些事儿(task)之 二 延续操作

    hello,又见面啦,昨天我们简单的介绍了如何去创建和运行一个task.如何实现task的同步执行.如何阻塞等待task集合的执行完毕等待,昨天讲的是task的最基本的知识点,如果你没有看昨天的博客, ...

  10. flutter 安装环境 Mac

    1.这是我第二次mac 安装 flutter环境了,但是这种东西记不住.打开写一下 有用的东西 一. ls vi 等命令 command not found原因是因为环境变量的问题,编辑profile ...