MySQL系列--4.使用Python3访问数据库
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访问数据库的更多相关文章
- MySQL 系列(二) 你不知道的数据库操作
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...
- mysql创建用户后无法访问数据库的问题
1.停止mysql服务器 sudo service mysql stop 2.启动mysql服务 sudo mysqld_safe --skip-grant-tables 3.登陆 mysql mys ...
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- MySQL强人“锁”难《死磕MySQL系列 三》
系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 前言 最近数据库 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 屌炸天实战 MySQL 系列教程(二) 史上最屌、你不知道的数据库操作
此篇写MySQL中最基础,也是最重要的操作! 第一篇:屌炸天实战 MySQL 系列教程(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:屌炸天实战 MySQL 系列教程(二) 史上最屌.你不 ...
- .Net程序员学用Oracle系列(16):访问数据库(ODP.NET)
1..Net for Oracle 常见数据库驱动 1.1.微软提供的驱动 1.2.甲骨文提供的驱动 1.3.其它厂商提供的驱动 2.ODP.NET 常见问题分析 2.1.参数化问题 2.2.方法调用 ...
- Mysql系列-数据库
一 .数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组 ...
- springboot访问数据库(MySql)
1.使用JDBC访问数据库:JDBC是用于在Java语言编程中与数据库连接的API <dependency> <groupId>org.springframework.boot ...
随机推荐
- 在Windows Server 2008 R2下搭建jsp环境(三)-Tomcat的下载安装
1.百度搜索"Tomcat官网",点击有标志的官网进入,准备下载官方正版Tomcat. 2.进入Tomcat官网之后,在左边我们看到,Tomcat的有6,7,8这三个最流行的版本, ...
- ratelimit.go
// The ratelimit package provides an efficient token bucket implementation , false } tb.avai ...
- go语言nsq源码解读五 nsqlookupd源码registration_db.go
本篇将讲解registration_db.go文件. 1234567891011121314151617181920212223242526272829303132333435363738394041 ...
- 关于” 记一次logback传输日志到logstash根据自定义设置动态创建ElasticSearch索引” 这篇博客相关的优化采坑记录
之前写过一篇博客是关于记录日志的简单方式的 主要就是 应用->redis->logstash->elasticsearch 整个流程的配置方法和过程的 虽然我们部分线上应用使用 ...
- jquery简易版xwPop.js弹出消息对话框插件
xwPop.js弹出消息对话框插件是一款含有多种情景模式的原生模态消息对话框代码,可用于替代浏览器默认的alert弹出对话框,它提供各种参数和方法,功能非常强大.目前已经在项目中有应用到xwpop开发 ...
- Jmeter-----【mac电脑】配置web浏览器的代理抓取请求
在测试中,不仅会涉及到APP中的数据测试,时常我们APP的数据需要与后台进行交互,因此我们不可避免的也需要对web进行接口测试,更准确的来说是使用web的接口来快速的帮我们实现App中所需的数据录入, ...
- 好几个div(元素)找到最后一个
<div> <div></div> <div></div> <div></div> </div> //找 ...
- 常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...
- 基于Mycat实现读写分离
随着应用的访问量并发量的增加,应用读写分离是很有必要的.当然应用要实现读写分离,首先数据库层要先做到主从配置,本人前一篇文章介绍了mysql数据库的主从配置方式即:<mysql数据库主从配置&g ...
- python接口自动化(二十四)--unittest断言——中(详解)
简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...