MySQL系列--4.使用Python3访问数据库

1、安装MySQL驱动

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

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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三十一期:世界上有四类人永远不可能成为编程界牛人(个人见解,欢迎补充)

本人歌谣,出来工作也有两年了。大学挂科无数,出来想搞技术。平时也就是以工作学习的知识为主,无聊的时候就会学习一些关于科技的知识。 在这本人给大家传授一些学习编程的心得体会,供大家分享交流: 1.没有专注力和恒心…

[Java]==和equals()的区别(按照数据类型区分)

背景知识 【引用类型】 复合数据类型是引用类型 **1.基本数据类型,也称原始数据类型。**byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(),比较的是他们的值。 基本数据类型比较, 和 …

某简单易懂的人脸识别 API 的开发环境搭建和简易教程

最近接了个人脸识别相关的项目,是基于某个非常简单易懂的人脸识别 API:face_recognition 做的。这个库接口非常傻瓜,很适合新手上手,而且可以研究其源码来学习 dlib 这个拥有更加灵活、强大的人脸识别功能的库。本文介绍了该 API …

第三十二期:如何摆脱「技术思维」的惯性?

虽然从标题上看,这篇文章是写给“技术人”的,但 从广义上来说,只要你是一位以理性见长的人,那么这篇文章要讲的东西可能会与你有关。 虽然从标题上看,这篇文章是写给“技术人”的,但 从广义上来说&#xff…

[Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]

【问题描述】[中等] 【解答思路】 1. 拓扑排序 复杂度分析 HashSet[] 数组 import java.util.HashSet; import java.util.LinkedList; import java.util.Queue;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {if (numCourses &l…

codeUp 2031 To fill or not to fill 复杂贪心

2031: To Fill or Not to Fill 时间限制: 1 Sec 内存限制: 32 MB 提交: 599 解决: 132 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way fro…

RabbitMQ(1) - win+rabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前&…

[周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

【问题描述】5457. 和为奇数的子数组数目[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结尾的和为偶数数量 第 2 步&#xff1a;状态转移方程 for(int i1;i<n;i){if(arr[i]%20){dp[i][0]…

第九期: 阿里巴巴程序员常用的15款开发者工具

阿里巴巴将自身在各类业务场景下的技术积淀&#xff0c;通过开源、云上实现或工具等形式对外开放&#xff0c;本文将精选了一些阿里巴巴的开发者工具&#xff0c;希望能帮助开发者们提高开发效率、更优雅的写代码。 从人工到自动化&#xff0c;从重复到创新&#xff0c;技术演进…

WPF 绑定StaticResource到控件的方法

WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法资源文件内的属性能否直接通过绑定应用到控件&#xff1f;答案是肯定的。 比如&#xff0c;我们要直接把下面的<SolidColorBrush x:Key"RedBrush" Color"#FFFF0000" />直…

第三十三期:对于人工智能的恐惧及其5个解决方法

实施人工智能技术的IT领导人可能会感到一些恐惧&#xff0c;这有着充分的理由。人工智能在拥有数十年发展和应用历史的同时却有着奇怪的定位&#xff0c;但对于许多人来说&#xff0c;人工智能仍然是一种未来主义的感觉。 实施人工智能技术的IT领导人可能会感到一些恐惧&#x…

[Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]

【问题描述】[简单] 【解答思路】 1. 双指针 时间复杂度&#xff1a;O(NM) 空间复杂度&#xff1a;O(1) class Solution { public:bool isSubsequence(string s, string t) {int n s.length(), m t.length();int i 0, j 0;while (i < n && j < m) {if (s[…

codeUp 2143: 迷瘴 浮点计算|贪心

2143: 迷瘴 时间限制: 1 Sec 内存限制: 32 MB 提交: 666 解决: 201 [提交][状态][讨论版][命题人:外部导入] 题目描述 小明正在玩游戏&#xff0c;他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长…

权限分配之权限的展示

最后就是权限的展示了&#xff1a;对前面的 总结&#xff1a;  1. 一级菜单列表&#xff0c;是我对 menu表的&#xff0c;增删改查。  2. 二级菜单列表&#xff0c;是我对Permission表中&#xff0c; 可以作为二级菜单存在&#xff0c;如 客户列表、账单列表的 增删改查  …

优先队列----堆

问题 打印机打印作业一般是放在队列中的。如果按照先来先打印的顺序&#xff0c;有一个100页的打印任务&#xff0c;那么会让后面短小的任务等待很长时间。更合理的做法也许是最后处理最耗时的打印任务&#xff0c;不管它是不是最后提交上来的。 在多用户操作系统中&#xff…

第三十四期:游戏开发中常见的10种编程语言

游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要技术水平。 他们需要具有特定需求的编程语言。 游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要…

[Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

【问题描述】5458. 字符串的好分割数目[中等] 【解答思路】 1. 双指针 前面的搜索前面的个数和&#xff0c;后面的搜索后面的个数和 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {/*双指针做法&#xff0c;前面的搜索前面的个数和&#xff0c;…

Spring Aop——给Advice传递参数

给Advice传递参数 Advice除了可以接收JoinPoint&#xff08;非Around Advice&#xff09;或ProceedingJoinPoint&#xff08;Around Advice&#xff09;参数外&#xff0c;还可以直接接收与切入点方法执行有关的对象&#xff0c;比如切入点方法参数、切入点目标对象&#xff08…

第三十五期:AI核心难点之一:情感分析的常见类型与挑战

情感分析或情感人工智能&#xff0c;在商业应用中通常被称为意见挖掘&#xff0c;是自然语言处理(NLP)的一个非常流行的应用。文本处理是该技术最大的分支&#xff0c;但并不是唯一的分支。情绪AI有三种类型及其组合。 情感分析或情感人工智能&#xff0c;在商业应用中通常被称…

AtCoder - 4172 Modulo Summation 贪心

开始想复杂的了 仔细观察样例后发现这个数 其实就是所有的数的LCM-1吗 只有LCM-1 对所有数取模的时候才能对所有数得到MOD = a[i]-1; 那么一个X%Y得到的最大值就是Y-1 于是得到了这个代码 #include<iostream> #include<cstdio> #include<queue> #includ…