ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

pymysql的使用

2022-06-18 09:02:55  阅读:170  来源: 互联网

标签:.__ sql 游标 pymysql cursor 使用 conn cls


1、操作流程

# 导包
import pymysql

# 创建连接
conn = pymysql.connect(host="localhost",   # 主机名或IP地址
                       port=3306,   # 端口
                       user="root",   # 用户名
                       password="root",   # 密码
                       database="books")   # 数据库名

# 获取游标
cursor = conn.cursor()

# 执行sql
sql = "......"
cursor.execute(sql)

# 关闭游标
cursor.close()

# 关闭连接
conn.close()

注意点:非查询操作需要提交事务

提交方法:

    1、自动提交 

    autocommit=True

  2、主动提交

    提交事务: conn.commit()     回滚事务: conn.rollback()   2、数据库工具封装思路 1、创建连接 2、创建游标 3、执行sql try: # 获取游标对象 # 调用游标对象.execute(sql) # 如果是 查询: # 返回所有数据 # 否则: # 提交事务 # 返回受影响的行数 except: # 回滚事务 # 抛出异常 finally: # 关闭游标 # 关闭连接 4、关闭游标 5、关闭连接   3、封装实现
# 导包
import pymysql


# 创建工具类
class DBUtil():
    # 初始化
    __conn = None
    __cursor = None

    # 创建连接
    @classmethod
    def __get_conn(cls):
        if cls.__conn is None:
            cls.__conn = pymysql.connect(host="localhost",
                                         port=3306,
                                         user="root",
                                         password="151621",
                                         database="books")
        return cls.__conn

    # 获取游标
    @classmethod
    def __get_cursor(cls):
        if cls.__cursor is None:
            cls.__cursor = cls.__get_conn().cursor()
        return cls.__cursor

    # 执行sql
    @classmethod
    def exe_sql(cls, sql):
        try:
            # 获取游标对象
            cursor = cls.__get_cursor()
            # 调用游标对象的execute方法,执行sql
            cursor.execute(sql)
            #  如果是查询
            if sql.split()[0].lower() == "select":
                # 返回所有数据
                return cursor.fetchall()
            #  否则:
            else:
                # 提交事务
                cls.__conn.commit()
                # 返回受影响的行数
                return cursor.rowcount
        except Exception as e:
            # 事务回滚
            cls.__conn.rollback()
            # 打印异常信息
            print(e)
        finally:
            # 关闭游标
            cls.__close_cursor()
            # 关闭连接
            cls.__close_conn()

    # 关闭游标
    @classmethod
    def __close_cursor(cls):
        if cls.__cursor:
            cls.__cursor.close()
            cls.__cursor = None

    # 关闭连接
    @classmethod
    def __close_conn(cls):
        if cls.__conn:
            cls.__conn.close()
            cls.__conn = None
  4、使用
from dbutil import DBUtil

# sql = "select * from t_book"
# sql = "insert into t_book(id, title, pub_date) values(4, '西游记', '1986- 01-01');"
# sql = "update t_book set title='东游记' where title = '西游记';"
# sql = "delete from t_book where title = '东游记';"
result = DBUtil.exe_sql(sql)
print(result)

 

标签:.__,sql,游标,pymysql,cursor,使用,conn,cls
来源: https://www.cnblogs.com/mtoy/p/16387620.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有