python教程之pymysql学习及DB类的实现
一、安装使用
pip install pymysql
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、连接
conn=pymysql.connect(user='root', password='123', database='laoleiphp', charset='utf8mb4')
2、事务
conn.begin()
conn.commit()
conn.rollback()
3、关闭连接
conn.close()
三、cursor Object
1、创建游标
cursor=conn.cursor(ops)
2、执行sql
cursor.execute(sql,(id))
cursor.excute("select id from sky_guest limit %s",(4))
3、获取结果
cursor.fetchall()
cursor.fetchone()
4、关闭游标
cursor.close()
5、获取自增id 新增数据
cursor.lastrowid
四、游标
1、默认类型 cursor 元组的方式保存
2、DictCursor 以字典的形式保存
cursor = conn.cursor(pymysql.cursors.DictCursor)
3、SSCursor和SSDictCursor
流式游标会陆陆续续一条一条得返回查询数据,所以这类游标适用于内存低、网络带宽小、数据量大的应用场景中
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 关闭连接
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='留言板';
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()