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)


相关推荐

  • (5)JMeter元件详解之Switch Controller

    (5)JMeter元件详解之Switch Controller

  • DIY 手动制作自己的win pe

    DIY 手动制作自己的win pe首先,写在前面的话,从网上下载的winpe用着总是觉得不安心(。。。),在然后自己做的pe可以封装进去自己常用的工具。准备1,在MSDN我告诉你上面下载win764sp1的安装包。2,EasyBoot和UltraISO。这两个工具自己去官网下载。注册的话,自己百度注册#码。3,imagex工具,(这个工具应该是在windowAIK里面)。我这用的是一个64位的程序。(…

  • eureka 集群失败的原因_Eureka集群的那些坑

    eureka 集群失败的原因_Eureka集群的那些坑今天遇到一个Eureka集群的一个坑。问题现场类似是这样的:两台Eureka组成的服务注册中心集群,两台服务提供方server1、server2,两个服务调用方client1、client2。正常的情况下:client1和client2通过服务中心获取的服务提供方的注册的元数据信息,然后本地缓存调用server2、server1的服务API是没问题的。调用server的api服务时采用的Feign…

  • Hibernate之Query接口的uniqueResult()方法[通俗易懂]

    Hibernate之Query接口的uniqueResult()方法[通俗易懂]如果查询返回多个值用list()方法public void testQuery(){Configuration config = new&#160

  • 使用VS2015进行C++开发的6个主要原因

    使用VS2015进行C++开发的6个主要原因 使用VisualStudio2015进行C++开发在今天的Build大会上,进行了“将你的C++代码转移至VS2015的6

    2021年12月27日
  • Java单例模式中双重检查锁的问题

    Java单例模式中双重检查锁的问题单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的Java内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含Java内存模型的一些隐秘细节。这些事实将导致代

发表回复

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

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