pythondb类⽤法说明我就废话不多说了,⼤家还是直接看代码吧~
import pymysql
class DB:
__host = 'localhost' # 服务器地址
__username = 'root' # ⽤户名
__password = '' # 密码
__database = 'test' # 数据库
__field = '*' # 查询字段
__where = '' # 条件
__sql = False # 是否返回sql
__join = '' # 联表
__order = '' # 排序
__limit = '' # 数量
# 构造函数,在⽣成对象时调⽤
def __init__(self, table):
try:
# 打开数据库连接 host, username, password, database
self.db = t(self.__host, self.__username, self.__password, self.__database)
except Exception as e:
print(e)
exit()
# 使⽤ cursor() ⽅法创建⼀个游标对象 cursor
self.cursor = self.db.cursor()
self.table = table
# 析构函数,释放对象时使⽤
def __del__(self):
try:
# 关闭数据库连接
self.db.close()
except Exception as e:
print(e)
# 得到当前sql语句
def getSql(self):
self.__sql = True
return self
# 字段
def field(self, str):
self.__field = str
return self
# 联表
def join(self, table, where):
self.__join = ' LEFT JOIN ' + table + ' ON ' + where + ' '
return self
# 条件
def where(self, param):
self.__where = ' WHERE '
if isinstance(param, list):
for i in param:
if isinstance(i[2], list):
tmp = '('
for j in i[2]:
tmp += str(j) + ','
tmp += ')'
self.__where += '`' + i[0] + '` ' + i[1] + ' ' + tmp + ' AND '
else:
self.__where += '`' + i[0] + '` ' + i[1] + ' ' + str(i[2]) + ' AND '
else:
self.__where = self.__where[0:-4]
else:
self.__where += param
return self
# 排序
def order(self, str):
self.__order = ' ORDER BY ' + str
return self
# 数量
def limit(self, str):
self.__limit = ' LIMIT ' + str
return self
# 增加
def insert(self, dict):
key = value = ''
for k, v in dict.items():
key += '`' + k + '`,'
value += '"' + v + '",'
key = key[0:-1]
value = value[0:-1]
sql = 'INSERT INTO ' + self.table + ' (' + key + ') VALUES (' + value + ')' if self.__sql:
return sql
try:
# 执⾏sql语句
ret = ute(sql)
# 提交到数据库执⾏
self.dbmit()
return ret
except Exception as e:
# 如果发⽣错误则回滚
llback()
print(e)
return 0
# 删除
def delete(self):
if self.__where:
sql = "DELETE FROM " + self.table + self.__where
if self.__sql:
return sql
try:
# 执⾏sql语句
ret = ute(sql)
# 提交到数据库执⾏
self.dbmit()
exists的用法return ret
except Exception as e:
# 如果发⽣错误则回滚
llback()
print(e)
return 0
else:
raise BaseException('没有条件') # 抛异常
# 修改
def update(self, dict):
str = ''
for k, v in dict.items():
str += '`' + k + '`="' + v + '",'
str = str[0:-1]
sql = 'UPDATE ' + self.table + ' SET ' + str
if self.__where:
sql += self.__where
if self.__sql:
return sql
try:
# 执⾏sql语句
ret = ute(sql)
# 提交到数据库执⾏
self.dbmit()
return ret
except Exception as e:
# 如果发⽣错误则回滚
llback()
print(e)
return 0
# 查询
def select(self):
sql = "SELECT " + self.__field + " FROM " + self.table
if self.__join:
sql += self.__join
if self.__where:
sql += self.__where
if self.__order:
sql += self.__order
if self.__limit:
sql += self.__limit
if self.__sql:
return sql
# 使⽤ execute() ⽅法执⾏ SQL 查询
ute(sql)
# 使⽤ fetchall() ⽅法获取所有数据.
data = self.cursor.fetchall()
return data
'''
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '名字',
`sex` varchar(7) DEFAULT '' COMMENT '性别',
`job` varchar(6) DEFAULT '' COMMENT '⼯作',
`age` varchar(6) DEFAULT '' COMMENT '年龄',
`height` varchar(6) DEFAULT '' COMMENT '⾝⾼',
`weight` varchar(6) DEFAULT '' COMMENT '体重',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `people` VALUES ('1', '赵⼀', '男', '学⽣', '8', '120', '35');
INSERT INTO `people` VALUES ('2', '钱⼆', '⼥', '学⽣', '9', '111', '31');
INSERT INTO `people` VALUES ('3', '孙三', '男', '学⽣', '10', '123', '34');
INSERT INTO `people` VALUES ('4', '李四', '⼥', '学⽣', '11', '100', '30');
'''
db = DB('people')
# 增加
dict = {'name': '周五', 'sex': '男', 'job': '学⽣', 'age': '8', 'height': '121', 'weight': '32'}
data = db.insert(dict)
print(data)
# 删除
# data = db.where('id=6').delete()
# print(data)
# 修改
# dict = {'age': '9', 'height': '121', 'weight': '31'}
# data = db.where('id=7').update(dict)
# print(data)
# 查询优化where条件 'id<11'
# data = db.field('id,name,age,job').where([['id', '>', 1]]).order('id desc').limit('3').select()
# print(data)
补充知识:python DB API cursor 常⽤接⼝
1. description
如果 cursor 执⾏了查询的 sql 代码。那么读取 cursor.description 属性的时候,将返回⼀个列表,这个列表中装的是元组,元组中装的分别
是 (name,type_code,display_size,internal_size,precision,scale,null_ok) ,其中 name 代表的是查出来的数据的字段名称,其他参数暂时⽤处不⼤。
2. rowcount
代表的是在执⾏了 sql 语句后受影响的⾏数。
3. close
关闭游标。关闭游标以后就再也不能使⽤了,否则会抛出异常。
4. execute(sql[,parameters])
执⾏某个 sql 语句。如果在执⾏ sql 语句的时候还需要传递参数,那么可以传给 parameters 参数。⽰例代码如下:
5. fetchone
在执⾏了查询操作以后,获取第⼀条数据。
6. fetchmany(size)
在执⾏查询操作以后,获取多条数据。具体是多少条要看传的 size 参数。如果不传 size 参数,那么默认是获取第⼀条数据。
7. fetchall
获取所有满⾜ sql 语句的数据。
以上这篇python db类⽤法说明就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论