前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python教程之pymysql及DB类的实现

python教程之pymysql及DB类的实现

作者头像
老雷PHP全栈开发
发布2020-07-02 15:10:26
1.2K0
发布2020-07-02 15:10:26
举报
文章被收录于专栏:老雷PHP全栈开发

python教程之pymysql学习及DB类的实现

一、安装使用

pip install pymysql

代码语言:javascript
复制
 conn=pymysql.connect(user='root',password='123', database='laoleiphp', charset='utf8')
    cursor=conn.cursor()
    sql="select * from sky_guest limit 10 "
    cursor.execute(sql)
    lists=cursor.fetchall()
    sql="insert into sky_guest set title='测试insert' "
    cursor.execute(sql)
    conn.commit()
    cursor.close()
    conn.close()

二、Connection Object

1、连接

代码语言:javascript
复制
conn=pymysql.connect(user='root', password='123', database='laoleiphp', charset='utf8mb4')

2、事务

代码语言:javascript
复制
conn.begin() 
    conn.commit()
    conn.rollback()

3、关闭连接

代码语言:javascript
复制
conn.close()

三、cursor Object

1、创建游标

代码语言:javascript
复制
cursor=conn.cursor(ops)

2、执行sql

代码语言:javascript
复制
    cursor.execute(sql,(id))
    cursor.excute("select id from sky_guest limit %s",(4))

3、获取结果

代码语言:javascript
复制
    cursor.fetchall()
    cursor.fetchone()

4、关闭游标

代码语言:javascript
复制
    cursor.close()

5、获取自增id 新增数据

代码语言:javascript
复制
 cursor.lastrowid

四、游标

1、默认类型 cursor 元组的方式保存

2、DictCursor 以字典的形式保存

代码语言:javascript
复制
 cursor = conn.cursor(pymysql.cursors.DictCursor)

3、SSCursor和SSDictCursor

流式游标会陆陆续续一条一条得返回查询数据,所以这类游标适用于内存低、网络带宽小、数据量大的应用场景中

代码语言:javascript
复制
cursor = conn.cursor(pymysql.cursors.SSCursor) 
cursor = conn.cursor(pymysql.cursors.SSDictCursor) 

五、DB类实现

setDb 设置数据库连接

query 执行sql语句

getAll 获取所有行

getRow 获取一行

getOne 获取一个字段

getCols 获取一列

insert 插入数据 返回自增id

update 更新数据

delete 删除数据

close 关闭连接

代码语言:javascript
复制
CREATE TABLE `sky_guest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) DEFAULT '' COMMENT '主题',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
  `telephone` varchar(15) NOT NULL DEFAULT '',
  `createtime` datetime NOT NULL DEFAULT '2019-01-17 08:08:01' COMMENT '留言时间',
  `content` text COMMENT '留言内容',
  `reply_content` text COMMENT '回复内容',
  `reply_time` datetime NOT NULL DEFAULT '2019-01-17 08:08:01' COMMENT '回复时间',
  `nickname` varchar(16) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 COMMENT='留言板';
代码语言:javascript
复制
class DB:
    def setDb(self,conn):
        self.conn=conn
    def query(self,sql,params=()):
        cursor=self.conn.cursor()
        cursor.execute(sql,params)
        self.conn.commit()
    def getAll(self,sql,params=()):
        cursor = self.conn.cursor(cursor = pymysql.cursors.DictCursor)
        cursor.execute(sql,params)
        lists=cursor.fetchall()
        return lists
    def getCols(self,sql,params=()):
        cursor = self.conn.cursor()
        cursor.execute(sql,params)
        lists=cursor.fetchall()
        res=[]
        if lists:
            for item in lists:
                res.append(item[0])
            return res       
    def getRow(self,sql,params=()):
        cursor = self.conn.cursor(cursor = pymysql.cursors.DictCursor)
        cursor.execute(sql,params)
        lists=cursor.fetchone()
        return lists
    def getOne(self,sql,params=()):
        cursor = self.conn.cursor()
        cursor.execute(sql,params)
        row=cursor.fetchone()
        if row:
            return row[0]     
    def insert(self,sql,params=()):
        cursor=self.conn.cursor()
        cursor.execute(sql,params)
        id=cursor.lastrowid
        self.conn.commit()
        return id
    def update(self,sql,params=()):
        cursor=self.conn.cursor()
        cursor.execute(sql,params)
        self.conn.commit()
    def delete(self,sql,params=()):
        cursor=self.conn.cursor()
        cursor.execute(sql,params)
        self.conn.commit()    

    def close(self):
        self.conn.close()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老雷PHP全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档