python操作mysql数据库第三方库_python与数据库连接的代码

python操作mysql数据库第三方库_python与数据库连接的代码MySQL系列–4.使用Python3访问数据库

大家好,又见面了,我是你们的朋友全栈君。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106880.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 汉诺塔问题java代码_汉诺塔问题编程算法

    汉诺塔问题java代码_汉诺塔问题编程算法代码:packagecom.wangyq.datastructrue.arithmetic;importjava.util.Arrays;importjava.util.Stack;/***分治算法-汉罗塔*/publicclassDivideAndConquer{publicstaticvoidmain(String[]args){//定义一个汉罗塔TowerofHanoitowerofHanoi=newT

    2022年10月12日
  • java finalize方法_实例分割模型

    java finalize方法_实例分割模型作者源代码已经开源,因此更新了结合作者源代码分析的网络实现部分此外,SOLOv2论文已经发布https://arxiv.org/abs/2003.10152,

  • Perf4J@Profiled的几种写法[通俗易懂]

    Perf4J@Profiled的几种写法[通俗易懂]在项目中使用Perf4J的最简便的方法就是直接在任何一个需要监控的方法上加上@Profiled注释即可。 @Profiled支持一些定制,在此记录几种@Profiled写法: 1、最简写法@Profiled     由此产生的日志语句形如: 2009-09-0714:37:23,734[main]INFOorg.perf4j.T…

  • Windows服务器补丁列表及介绍_操作系统打补丁我用WSUS[通俗易懂]

    你可曾遇到过使用Windows自带的UPDATE下载补丁速度非常慢,往往要等待3小时以上甚至更多呢?这还仅仅局限在关键更新上,要是把驱动和非关键更新也下载的话需要的时间会更长。如果公司只是在一个内网中员工计算机不容许上网的话你又是如何保证他们的补丁是最新的呢?恐怕使用默认的UPDATE都不能实现这些功能。  微软替我们想出了一个办法——使用WSUS。通过WSUS我们可以建立一个内部的UPDATE服…

  • can not create this interface_getinterfaces方法

    can not create this interface_getinterfaces方法Androidstudio导入依赖,构建时报错错误如下: StaticinterfacemethodsareonlysupportedstartingwithAndroidN(–min-api24):voidbutterknife.Unbinder.lambda$static$0()Message{kind=ERROR,text=Statici…

  • qt中connect函数信号写法_qt中connect函数用法

    qt中connect函数信号写法_qt中connect函数用法*.cpp//带参数的拉姆达表达式connect(this,&Widget::mySignal,[=](intcount){qDebug()<<count;});mySignal(123456);*.hsignals:voidmySignal(intcount);注意:要在pro文件中加上CONFIG+=C++11…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号