PyMySQL连接 Mysql

  • 安装 PyMySQL
  • PyMySQL 连接数据库
  • 创建数据库(数据库必须存在)
  • 创建数据表
  • 插入操作
  • 查询操作
  • 更新操作
  • 删除操作
  • 综合案例
  • Connection Object
  • Cursor Objects

两种方法进行数据库的连接分别是 PyMySQLmysql.connector,我们学习 PyMySQL

操作步骤:

  1. 连接数据库 conn = pymysql.connect()
  2. 生成游标对象 curosr = conn.cursor()
  3. 执行SQL语句 cursor.execute(sql)
  4. 关闭游标 cursor.close()
  5. 关闭连接 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 类提供以下方法:

  1. .close()
    从这一点开始,连接将不可用;如果试图对连接执行任何操作,将会引发错误(或子类)异常
  2. .commit()
    将操作提交到数据库;
    如果数据库支持自动提交特性,则必须首先关闭此功能;
    可以提供一个接口方法将其重新打开;
  3. .cursor()
    创建游标,用于执行 SQL 语句
  4. .rollback()
    此方法是可选的,因为并非所有数据库都提供事务支持;
    如果数据库确实提供事务,此方法将导致数据库回滚到任何挂起事务的开始;
    在不首先提交更改的情况下关闭连接将导致执行隐式回滚;

Cursor Objects

游标对象具有以下常用方法

  1. .close()
    关闭游标对象,从这一点开始,游标对象将不可用;
    如果试图使用游标执行任何操作,将引发错误(或子类)异常。
  2. .execute()
    执行数据库操作(查询或命令等SQL语句);
    返回值没有定义。
  3. .fetchone()
    获取查询结果的下一行,返回单个序列,或者在没有更多数据可用时返回 None
    如果 execute() 的调用没有生成任何结果,或者还没有执行,则会引发错误(或子类)异常。
  4. .fetchall()
    获取查询结果的所有(剩余)行,以序列的形式返回它们(例如元组列表)
    如果前面对 .execute() 的调用没有生成任何结果集,或者还没有发出调用,则会引发错误(或子类)异常。

【Python】PyMySQL 连接 MySQL数据库相关推荐

  1. 使用Python pymysql连接Mysql数据库-菜鸟教程

    1.安装pymysql模块 pip install pymysql 2.启动Mysql数据库服务 net start mysql80 3.连接数据库 import pymysql# 打开数据库连接 d ...

  2. python使用pymysql连接mysql_python3使用PyMysql连接mysql数据库的简单示例

    这篇文章主要为大家详细介绍了python3使用PyMysql连接mysql数据库的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小 ...

  3. 记录python使用pymysql连接mysql数据库,使用impyla、ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅)

    记录python使用pymysql连接mysql数据库,使用impyla.ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅) 连接mysql ...

  4. pymysql连接mysql数据库try_pymysql 连接数据库和基本使用

    pymysql 连接mysql数据库import pymysql.cursors # 连接数据库配置信息 connection = pymysql.connect(host='localhost', ...

  5. python Django 连接mysql数据库创建表详细全过程

    python Django 连接mysql数据库创建表详细全过程 1,在数据库中新建一个要连接的数据库(在cmd命令行里登录数据库进行创建创建) mysql -u root -p**+密码** cre ...

  6. 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法

    关于MAC下pymysql连接mysql数据库报错2003的问题解决方法 问题:pymysql.err.OperationalError: (2003, "Can't connect to ...

  7. python:实现连接mysql数据库(附完整源码)

    python:实现连接mysql数据库 可以使用Python的mysql-connector库实现连接MySQL数据库.以下是一个简单的源代码示例: import mysql.connector# 连 ...

  8. python远程连接mysql数据库_python远程连接MySQL数据库

    python远程连接MySQL数据库 本文实例为大家分享了python远程连接MySQL数据库的具体代码,供大家参考,具体内容如下 连接数据库 这里默认大家都已经配置安装好 MySQL 和 Pytho ...

  9. python接口自动化(四十三)-公共模块 pymysql 连接mysql数据库(单独说明)

    #coding=utf-8 import pymysqlclass MysqlUntil:def __init__(self, host, user, passwd, db, port, charse ...

最新文章

  1. java cups_java if 语句 class Test03{\x05\x05main(){\x05\x05\x05int cups
  2. 数据结构和算法分析:第二章 算法分析
  3. 老司机也晕车--java字符串String晕车之旅
  4. 分享:RethinkDB 1.3 发布,分布式 JSON 数据库
  5. oop中构造函数编写的注意事项
  6. 使用Spock测试您的代码
  7. SpringBoot 之多个过滤器(Filter) ,监听器(Listener),切面(AOP),拦截器(Interceptor)的指定排序问题总结篇
  8. Java设计模式与实践
  9. IE成长之路--OSPF报文类型
  10. 51单片机对直流电机的控制
  11. html里面判断字段显示,HTML特殊字符显示
  12. 关于神经网络的英语单词有,神经网络的英文单词
  13. 清北学堂2018noip集训D1
  14. mysql audit log_Percona Audit Log Plugin(mysql 审计)
  15. android 5.1 壁纸路径,Android5.1 壁纸来源选项中有两个“壁纸”选项
  16. C++控制台RPG游戏具体实现思路: 任务系统
  17. Android View 生成唯一 Id
  18. wss2016 作文件服务器,Nodejs搭建wss服务器教程
  19. 2022京东双十一全品类销售额变化情况一览:50%增长,50%下滑
  20. 游戏平台,游戏私服选择三方支付的优势

热门文章

  1. 一开电脑都是广告,请问怎么永久关闭?
  2. 类的自动转换和强制类型转换
  3. Linux服务器安装JavaWeb环境(一) Jdk,Maven,Nginx,Tomcat
  4. php k线图粒度计算,【k线】k线图中MA均线计算
  5. SQL Server 2014数据访问层
  6. 使用Windows Performance Monitor进行SQL Server性能调整
  7. Questions make me doubt my engineer career
  8. ORACLE1.8-序列
  9. 使用SOCKET TCP
  10. iOS捕获异常的处理