关于pymysql模块的使用以及代码详解

作者:三国小梦 时间:2024-01-23 04:16:26 

pymysql模块的使用

查询一条数据fetchone()


from pymysql import *

conn = connect(
 host='127.0.0.1',
 port=3306, user='root',
 password='123456',
 database='itcast',
 charset='utf8')

# 创建游标
c = conn.cursor()
# 执行sql语句
c.execute("select * from student")
# 查询一行数据
result = c.fetchone()
print(result)
# 关闭游标
c.close()
# 关闭数据库连接
conn.close()
"""
(1, '张三', 18, b'\x01')
"""

查询多条数据fetchall()


from pymysql import *

conn = connect(
 host='127.0.0.1',
 port=3306, user='root',
 password='123456',
 database='itcast',
 charset='utf8')

# 创建游标
c = conn.cursor()
# 执行sql语句
c.execute("select * from student")
# 查询多行数据
result = c.fetchall()
for item in result:
 print(item)
# 关闭游标
c.close()
# 关闭数据库连接
conn.close()
"""
(1, '张三', 18, b'\x01')
(2, '李四', 19, b'\x00')
(3, '王五', 20, b'\x01')
"""

更改游标的默认设置,返回值为字典


from pymysql import *

conn = connect(
 host='127.0.0.1',
 port=3306, user='root',
 password='123456',
 database='itcast',
 charset='utf8')

# 创建游标,操作设置为字典类型
c = conn.cursor(cursors.DictCursor)
# 执行sql语句
c.execute("select * from student")
# 查询多行数据
result = c.fetchall()
for item in result:
 print(item)
# 关闭游标
c.close()
# 关闭数据库连接
conn.close()
"""
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
{'id': 2, 'name': '李四', 'age': 19, 'sex': b'\x00'}
{'id': 3, 'name': '王五', 'age': 20, 'sex': b'\x01'}
"""

返回一条数据时也是一样的。返回字典或者时元组看个人需要。

2|2使用数据操作语句

执行增加、删除、更新语句的操作其实是一样的。只写一个作为示范。


from pymysql import *

conn = connect(
 host='127.0.0.1',
 port=3306, user='root',
 password='123456',
 database='itcast',
 charset='utf8')

# 创建游标
c = conn.cursor()
# 执行sql语句
c.execute("insert into student(name,age,sex) values (%s,%s,%s)",("小二",28,1))
# 提交事务
conn.commit()
# 关闭游标
c.close()
# 关闭数据库连接
conn.close()

和查询语句不同的是必须使用commit()提交事务,否则操作就是无效的。

3|0编写数据库连接类

普通版

MysqlHelper.py


from pymysql import connect,cursors

class MysqlHelper:
 def __init__(self,
        host="127.0.0.1",
        user="root",
        password="123456",
        database="itcast",
        charset='utf8',
        port=3306):
   self.host = host
   self.port = port
   self.user = user
   self.password = password
   self.database = database
   self.charset = charset
   self._conn = None
   self._cursor = None

def _open(self):
   # print("连接已打开")
   self._conn = connect(host=self.host,
              port=self.port,
              user=self.user,
              password=self.password,
              database=self.database,
              charset=self.charset)
   self._cursor = self._conn.cursor(cursors.DictCursor)

def _close(self):
   # print("连接已关闭")
   self._cursor.close()
   self._conn.close()

def one(self, sql, params=None):
   result: tuple = None
   try:
     self._open()
     self._cursor.execute(sql, params)
     result = self._cursor.fetchone()
   except Exception as e:
     print(e)
   finally:
     self._close()
   return result

def all(self, sql, params=None):
   result: tuple = None
   try:
     self._open()
     self._cursor.execute(sql, params)
     result = self._cursor.fetchall()
   except Exception as e:
     print(e)
   finally:
     self._close()
   return result

def exe(self, sql, params=None):
   try:
     self._open()
     self._cursor.execute(sql, params)
     self._conn.commit()
   except Exception as e:
     print(e)
   finally:
     self._close()

该类封装了fetchone、fetchall、execute,省去了数据库连接的打开和关闭和游标的打开和关闭。

下面的代码是调用该类的小示例:


from MysqlHelper import *

mysqlhelper = MysqlHelper()
ret = mysqlhelper.all("select * from student")
for item in ret:
 print(item)
"""
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
{'id': 2, 'name': '李四', 'age': 19, 'sex': b'\x00'}
{'id': 3, 'name': '王五', 'age': 20, 'sex': b'\x01'}
{'id': 5, 'name': '小二', 'age': 28, 'sex': b'\x01'}
{'id': 6, 'name': '娃哈哈', 'age': 28, 'sex': b'\x01'}
{'id': 7, 'name': '娃哈哈', 'age': 28, 'sex': b'\x01'}
"""

上下文管理器版

mysql_with.py


from pymysql import connect, cursors

class DB:
 def __init__(self,
        host='localhost',
        port=3306,
        db='itcast',
        user='root',
        passwd='123456',
        charset='utf8'):
   # 建立连接
   self.conn = connect(
     host=host,
     port=port,
     db=db,
     user=user,
     passwd=passwd,
     charset=charset)
   # 创建游标,操作设置为字典类型
   self.cur = self.conn.cursor(cursor=cursors.DictCursor)

def __enter__(self):
   # 返回游标
   return self.cur

def __exit__(self, exc_type, exc_val, exc_tb):
   # 提交数据库并执行
   self.conn.commit()
   # 关闭游标
   self.cur.close()
   # 关闭数据库连接
   self.conn.close()

如何使用:


from mysql_with import DB

with DB() as db:
 db.execute("select * from student")
 ret = db.fetchone()
 print(ret)

"""
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
"""

来源:https://www.cnblogs.com/lxy0/p/11441723.html

标签:pymysql,模块使用
0
投稿

猜你喜欢

  • Oracle Instr函数实例讲解

    2024-01-14 18:05:32
  • 对python条件表达式的四种实现方法小结

    2023-11-05 17:01:58
  • 最新google pr查询接口

    2012-03-12 20:00:39
  • javabean servlet jsp实现分页功能代码解析

    2023-06-13 15:21:24
  • 删除数据库中重复数据的几个方法

    2024-01-17 12:56:36
  • 简单谈谈python中的语句和语法

    2023-03-03 12:03:13
  • 分享8 个常用pandas的 index设置

    2023-10-24 14:22:13
  • SQL学习笔记四 聚合函数、排序方法

    2011-09-30 11:33:29
  • Python for Informatics 第11章之正则表达式(四)

    2023-06-15 04:48:39
  • 浅析Python字符串中的r和u的区别

    2021-06-25 04:47:57
  • python结合shell查询google关键词排名的实现代码

    2023-10-11 21:28:47
  • GO语言延迟函数defer用法详解

    2024-02-18 16:56:27
  • 利用Python生成文件md5校验值函数的方法

    2023-09-29 14:51:40
  • Python内存管理实例分析

    2021-06-13 01:39:21
  • Python Lambda函数使用总结详解

    2022-05-07 11:41:31
  • 深入了解Golang的指针用法

    2024-05-21 10:22:58
  • python爬虫beautiful soup的使用方式

    2023-05-17 08:13:22
  • Viso 2019 下载与激活方法

    2023-03-19 08:17:44
  • laravel清除视图缓存的代码

    2023-11-24 14:39:39
  • python学习必备知识汇总

    2022-01-05 10:26:23
  • asp之家 网络编程 m.aspxhome.com