【Python】PyMySQL 连接 MySQL数据库
PyMySQL连接 Mysql
- 安装 PyMySQL
- PyMySQL 连接数据库
- 创建数据库(数据库必须存在)
- 创建数据表
- 插入操作
- 查询操作
- 更新操作
- 删除操作
- 综合案例
- Connection Object
- Cursor Objects
两种方法进行数据库的连接分别是 PyMySQL 和 mysql.connector,我们学习 PyMySQL。
操作步骤:
- 连接数据库
conn = pymysql.connect()
- 生成游标对象
curosr = conn.cursor()
- 执行SQL语句
cursor.execute(sql)
- 关闭游标
cursor.close()
- 关闭连接
conn.closr()
PyMySQL 是在 Python3.4 以后版本中用于连接 MySQL 数据库的一个模块;
Python2 中则使用 mysqldb
安装 PyMySQL
首先要安装这个模块:
pip install pymysql
检查一下是否安装成功:
pip show pymysql
PyMySQL 连接数据库
import pymysql# 创建数据库连接
conn = pymysql.connect(host = '127.0.0.1', # 连接主机, 默认127.0.0.1 user = 'root', # 用户名passwd = '1234',# 密码port = 3306, # 端口,默认为3306db = 'test', # 数据库名称charset = 'utf8' # 字符编码
)# 生成游标对象 cursor
cursor = conn.cursor()# 查询数据库版本
cursor.execute("select version()") # 返回值是查询到的数据数量
# 通过 fetchall方法获得数据
data = cursor.fetchone()
print("Database Version:%s" % data)cursor.close() # 关闭游标
conn.close() # 关闭连接
创建数据库(数据库必须存在)
由于连接数据库时需要填要连接的数据库名,所以创建数据库只能做到:删除已经存在的数据库,再重新创建,相当于 清空数据库 的作用。
# 创建数据库 test
cursor.execute("drop database if exists test") #如果数据库已经存在,那么删除后重新创建
sql = "create database test"
cursor.execute(sql)
创建数据表
# 创建数据表
cursor.execute("drop table if exists employee") # 如果数据表已经存在,那么删除后重新创建
sql = """
CREATE TABLE employee (id VARCHAR(20) NOT NULL,name VARCHAR(20),age INT,income FLOAT
)
"""
cursor.execute(sql)
插入操作
# 数据库插入数据
sql = "INSERT INTO employee VALUES ('1', '张三', 20, 5000)"
try:cursor.execute(sql)# 提交当前游标的全部操作conn.commit()
except:print("expection!")conn.rollback()# 查看更新后的结果
sql = "SELECT* FROM employee"
cursor.execute(sql)
data = cursor.fetchall()
print(data)
查询操作
只查询出一条数据:cursor.fetchone()
sql = "SELECT* FROM employee"
cursor.execute(sql) # 返回值是查询到的数据数量
data = cursor.fetchone() # 查询一条数据
print(data)
查询数据库中所有数据:cursor.fetchall()
# 数据库查询数据
sql = "SELECT * FROM employee"
cursor.execute(sql) # 返回值是查询到的数据数量
data = cursor.fetchall() # 查询一条数据
print(data)
查询指定条件的数据:查询满足条件 income > 5000
的数据。
# 查询指定条件的数据
sql = " SELECT * FROM employee WHERE income > '%d' " % (5000)
cursor.execute(sql) # 返回值是查询到的数据数量
data = cursor.fetchone()
print(data)
更新操作
# 更新数据库
sql = " UPDATE employee SET age = age + 1 WHERE age < '%d' " % (25)
try:cursor.execute(sql)conn.commit()
except:print("expection!")conn.rollback()# 查看更新后的结果
sql = "SELECT* FROM employee"
cursor.execute(sql)
data = cursor.fetchall()
print(data)
删除操作
# 删除数据
sql = "DELETE FROM employee WHERE age > '%d' " % (30)
try:cursor.execute(sql)conn.commit()
except:print("exce[tion!")conn.rollback()#查看更新后的结果
sql = "select * from employee"
cursor.execute(sql)
data = cursor.fetchone()
print(data)
综合案例
保证数据库中有 test
表:
import pymysql
import traceback
from time import sleepclass PyMySQL(object):create_table = """CREATE TABLE stu ( id INT not null PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255) NOT NULL,age INT, sex VARCHAR(255)) DEFAULT CHARSET = utf8"""select = 'SELECT * FROM stu'update = 'UPDATE stu SET name = "明明" WHERE id=2'delete = 'DELETE FROM stu WHERE id=9'insert = 'INSERT INTO stu(name, age, sex) VALUES("%s", "%d", "%s")' % ('小明', 2, "男")def __init__(self, host, user, pwd, db):self.conn = pymysql.connect(host, user, pwd, db)self.cursor = self.conn.cursor()print("数据库连接成功!")def closeAll(self):self.conn.close()self.cursor.close()print("资源释放完毕!")def create_table_func(self):self.cursor.execute("DROP TABLE IF EXISTS stu")self.cursor.execute(PyMySQL.create_table)print('数据表创建完毕')def insert_date(self):try:self.cursor.execute(PyMySQL.insert)self.conn.commit()print("数据插入成功!")except:print(traceback.format_exc())self.conn.rollback()print("数据插入失败!")def update_data(self):try:self.cursor.execute(PyMySQL.update)self.conn.commit()print("数据更新成功!")except:print(traceback.format_exc())self.conn.rollback()print("数据更新失败!")def delete_data(self):try:self.cursor.execute(PyMySQL.delete)self.conn.commit()print("数据删除成功!")except:print(traceback.format_exc())self.conn.rollback()print("数据删除失败!")def select_data(self):self.cursor.execute(PyMySQL.select)all_data = self.cursor.fetchall()for i in all_data:print('查询结果为:{}'.format(i))if __name__ == '__main__':my = PyMySQL('localhost','root','1234','test')my.create_table_func()my.insert_date()my.update_data()my.delete_data()my.select_data()my.closeAll()
Connection Object
Connection
类提供以下方法:
.close()
从这一点开始,连接将不可用;如果试图对连接执行任何操作,将会引发错误(或子类)异常.commit()
将操作提交到数据库;
如果数据库支持自动提交特性,则必须首先关闭此功能;
可以提供一个接口方法将其重新打开;.cursor()
创建游标,用于执行 SQL 语句.rollback()
此方法是可选的,因为并非所有数据库都提供事务支持;
如果数据库确实提供事务,此方法将导致数据库回滚到任何挂起事务的开始;
在不首先提交更改的情况下关闭连接将导致执行隐式回滚;
Cursor Objects
游标对象具有以下常用方法
.close()
关闭游标对象,从这一点开始,游标对象将不可用;
如果试图使用游标执行任何操作,将引发错误(或子类)异常。.execute()
执行数据库操作(查询或命令等SQL语句);
返回值没有定义。.fetchone()
获取查询结果的下一行,返回单个序列,或者在没有更多数据可用时返回 None
如果execute()
的调用没有生成任何结果,或者还没有执行,则会引发错误(或子类)异常。.fetchall()
获取查询结果的所有(剩余)行,以序列的形式返回它们(例如元组列表)
如果前面对.execute()
的调用没有生成任何结果集,或者还没有发出调用,则会引发错误(或子类)异常。
【Python】PyMySQL 连接 MySQL数据库相关推荐
- 使用Python pymysql连接Mysql数据库-菜鸟教程
1.安装pymysql模块 pip install pymysql 2.启动Mysql数据库服务 net start mysql80 3.连接数据库 import pymysql# 打开数据库连接 d ...
- python使用pymysql连接mysql_python3使用PyMysql连接mysql数据库的简单示例
这篇文章主要为大家详细介绍了python3使用PyMysql连接mysql数据库的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小 ...
- 记录python使用pymysql连接mysql数据库,使用impyla、ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅)
记录python使用pymysql连接mysql数据库,使用impyla.ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅) 连接mysql ...
- pymysql连接mysql数据库try_pymysql 连接数据库和基本使用
pymysql 连接mysql数据库import pymysql.cursors # 连接数据库配置信息 connection = pymysql.connect(host='localhost', ...
- python Django 连接mysql数据库创建表详细全过程
python Django 连接mysql数据库创建表详细全过程 1,在数据库中新建一个要连接的数据库(在cmd命令行里登录数据库进行创建创建) mysql -u root -p**+密码** cre ...
- 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法
关于MAC下pymysql连接mysql数据库报错2003的问题解决方法 问题:pymysql.err.OperationalError: (2003, "Can't connect to ...
- python:实现连接mysql数据库(附完整源码)
python:实现连接mysql数据库 可以使用Python的mysql-connector库实现连接MySQL数据库.以下是一个简单的源代码示例: import mysql.connector# 连 ...
- python远程连接mysql数据库_python远程连接MySQL数据库
python远程连接MySQL数据库 本文实例为大家分享了python远程连接MySQL数据库的具体代码,供大家参考,具体内容如下 连接数据库 这里默认大家都已经配置安装好 MySQL 和 Pytho ...
- python接口自动化(四十三)-公共模块 pymysql 连接mysql数据库(单独说明)
#coding=utf-8 import pymysqlclass MysqlUntil:def __init__(self, host, user, passwd, db, port, charse ...
最新文章
- java cups_java if 语句 class Test03{\x05\x05main(){\x05\x05\x05int cups
- 数据结构和算法分析:第二章 算法分析
- 老司机也晕车--java字符串String晕车之旅
- 分享:RethinkDB 1.3 发布,分布式 JSON 数据库
- oop中构造函数编写的注意事项
- 使用Spock测试您的代码
- SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇
- Java设计模式与实践
- IE成长之路--OSPF报文类型
- 51单片机对直流电机的控制
- html里面判断字段显示,HTML特殊字符显示
- 关于神经网络的英语单词有,神经网络的英文单词
- 清北学堂2018noip集训D1
- mysql audit log_Percona Audit Log Plugin(mysql 审计)
- android 5.1 壁纸路径,Android5.1 壁纸来源选项中有两个“壁纸”选项
- C++控制台RPG游戏具体实现思路: 任务系统
- Android View 生成唯一 Id
- wss2016 作文件服务器,Nodejs搭建wss服务器教程
- 2022京东双十一全品类销售额变化情况一览:50%增长,50%下滑
- 游戏平台,游戏私服选择三方支付的优势