博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL系列--4.使用Python3访问数据库
阅读量:5125 次
发布时间:2019-06-13

本文共 3478 字,大约阅读时间需要 11 分钟。

1、安装MySQL驱动

pip install mysql-connector

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

Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linuxType "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)

转载于:https://www.cnblogs.com/webDepOfQWS/p/10693105.html

你可能感兴趣的文章
【题解】[P4178 Tree]
查看>>
QML学习笔记之一
查看>>
WPF中实现多选ComboBox控件
查看>>
ionic2+ 基础
查看>>
GDOI DAY1游记
查看>>
MyBaits动态sql语句
查看>>
拉格朗日乘子法 那些年学过的高数
查看>>
vs code 的便捷使用
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JAVA开发环境搭建
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
SDN第四次作业
查看>>
django迁移数据库错误
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>