1、安装MySQL驱动

安装完成后进入命令行模式,导入驱动,如果不报错,说明安装成功

Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>>

2、安装MySQL

MySQL安装请参考:https://www.cnblogs.com/webDepOfQWS/p/10685617.html

3、操作数据库

MySQL操作数据库的一般步骤如下:

a、建立连接

b、通过连接对象得到游标对象

c、执行SQL语句,获取执行结果,如果执行的SQL语句会改变数据库或表 ,需要提交,才会保存修改。

d、关闭游标对象,关闭连接对象。

创建表并插入数据

在rms数据库中创建一张表:user_info并插入2条数据,创建表SQL语句如下:

create table user_info(
id int(10) primary key,
name char(20) not null,
passwd char(40) not null,
email char(20) not null,
phone char(20) not null,
role char(10) not null,
sex char(10) not null,
status int(10) not null,
createAt datetime not null,
exprAt datetime not null,
validDays int(10) not null,
delAt datetime
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

Python3代码:

#coding:utf-8
#导入驱动
import mysql.connector
#建立连接
conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password')
#获游标标对象
cursor = conn.cursor()
#SQL语句
SQL1='''create table user_info(
id int(10) primary key,
name char(20) not null,
passwd char(40) not null,
email char(20) not null,
phone char(20) not null,
role char(10) not null,
sex char(10) not null,
status int(10) not null,
createAt datetime not null,
exprAt datetime not null,
validDays int(10) not null,
delAt datetime
)ENGINE=InnoDB DEFAULT CHARSET=utf8;'''
SQL2='''insert into user_info values
(1,"StephenWang7","123456","123@qq.com","15103887470","admin","male","200","20190412201130","20190419201130",30,null)'''
try:
#执行创建表的SQL语句
cursor.execute(SQL1)
#执行插入语句
cursor.execute(SQL2)
#提交
conn.commit()
except Exception as e:
print(e)
finally:
#关闭游标对象
cursor.close()
#关闭连接
conn.close

连接数据库查看结果:

mysql> select  count(*) from  user_info;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.27 sec) mysql>

查询SQL执行结果

fetchone():返回一条结果。

fetchall():返回所有结果。

fetchmany([size]):返回size条结果。

示例1:

try:
cursor.execute("select count(*) from user_info;")
#获取执行结果
result = cursor.fetchone()
print(result) except Exception as e:
print(e)

输出1:

#返回的是一个tuple
(2,)

示例2:

查询user_info表中所有的记录。

try:
cursor.execute("select count(*) from user_info;")
#获取执行结果,fatchone 只返回一条结果
result = cursor.fetchone()
print(result) except Exception as e:
print(e)

运行示例2的代码时,报错:Unread result found,在连接数据库时设置'buffered': True。

conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password',buffered=True)

输出2:

(1, 'StephenWang7', '123456', '123@qq.com', '15103887470', 'admin', 'male', 200, datetime.datetime(2019, 4, 12, 20, 11, 30), datetime.datetime(2019, 4, 19, 20, 11, 30), 30, None)

更新和删除

更新和删除的代码与创建表类似,需要说明的一点是执行语句之后需要提交(commmit)。

#coding:utf-8
#导入驱动
import mysql.connector
#建立连接
conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password',buffered=True)
#获游标标对象
cursor = conn.cursor()
try:
#执行更新语句
cursor.execute("update user_info set passwd=%s where id=%s",['py123456',1])
#获取执行结果
result = cursor.fetchone()
print(result)
#提交
conn.commit()
except Exception as e:
print(e)
finally:
#关闭游标对象
cursor.close()
#关闭连接
conn.close

MySQL的占位符为%s,连接数据库查看结果:

mysql> select  passwd from user_info  where id=1;
+----------+
| passwd |
+----------+
| py123456 |
+----------+
1 row in set (0.03 sec)

MySQL系列--4.使用Python3访问数据库的更多相关文章

  1. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  2. mysql创建用户后无法访问数据库的问题

    1.停止mysql服务器 sudo service mysql stop 2.启动mysql服务 sudo mysqld_safe --skip-grant-tables 3.登陆 mysql mys ...

  3. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  4. MySQL强人“锁”难《死磕MySQL系列 三》

    系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 前言 最近数据库 ...

  5. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  6. 屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作

    此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不 ...

  7. .Net程序员学用Oracle系列(16):访问数据库(ODP.NET)

    1..Net for Oracle 常见数据库驱动 1.1.微软提供的驱动 1.2.甲骨文提供的驱动 1.3.其它厂商提供的驱动 2.ODP.NET 常见问题分析 2.1.参数化问题 2.2.方法调用 ...

  8. Mysql系列-数据库

    一 .数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组 ...

  9. springboot访问数据库(MySql)

    1.使用JDBC访问数据库:JDBC是用于在Java语言编程中与数据库连接的API <dependency> <groupId>org.springframework.boot ...

随机推荐

  1. plugin.go 源码阅读

    , nil)             }             if c.client != nil {                 c.client.Close()             } ...

  2. MySQL 慢查询日志总结

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  3. BZOJ_3872_[Poi2014]Ant colony_dfs

    BZOJ_3872_[Poi2014]Ant colony_dfs Description There is an entrance to the ant hill in every chamber ...

  4. BZOJ_1316_树上的询问_点分治

    BZOJ_1316_树上的询问_点分治 Description 一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. Input 第一行两个整 ...

  5. monkey-----停止正在测试的monkey

    第一步:adb   shell ps | grep monkey:查找到正在测试的monkey包名   第二步:kill   pid:删除查找出的monkey进程   以上完美的停止monkey测试

  6. Vue之生命周期函数和钩子函数详解

    在学习vue几天后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对对vue的生命周期不甚了解.只知道简单的使用,而不知道为什么,这对后面的踩坑是相当不利的.因为我们有时候会在几个钩子函 ...

  7. Java语言编程 - Java第一个程序HelloWorld

    3.1 新建Java文件 首先新建一个文件夹,用于存放写的Java程序,例如我存放Java程序的位置为” D:\Files\code\java”. 在该文件夹中,右键新建一个文本文档 将文件名重命名为 ...

  8. ssm日期格式转换

    ssm日期格式转换 1      需求 前端传入字符串类型日期转化成java中的Date类型,存入数据库中;将数据库中的日期类型通过jstl标签在前端页面转换成字符串类型. 2      步骤 2.1 ...

  9. 使用强类型实体Id来避免原始类型困扰(一)

    原文地址:https://andrewlock.net/using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-1/ 作者: ...

  10. Linux-误删apt-get以及把aptitude换回

    误删apt-get拯救我的linux 一.前言 先来说一下apt-get, 这个我们使用linux过程中最常用的命令之一. apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于 ...