封装pymysql中的功能
每次通过python连接数据库都要先连接-创游标-查询-关闭游标-关闭连接
查询不同数据库直接修改db参数或是修改查询语句即可,但我比较懒,写一个类讲这些功能封装到一个类里面,每次调用即可,功能尚不完善,以后经常用到什么再往里面添加
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/8 12:16
# @Author : shell-x
# @File : sql_query.py
# @Software: PyCharm
from pymysql import *
class MyDb(object):
def __init__(self, db: str):
try:
# 连接数据库
self.conn = connect(
host='localhost',
port=3306,
db=db,
user='root',
passwd='root',
charset='utf8'
)
except Exception as e:
print(e)
# 连接游标
self.cursor = self.conn.cursor()
# 查询数据时用的执行语句
def execute_sql(self, sql):
self.cursor.execute(sql)
r = self.cursor.fetchall()
for i in r:
print(i)
# 查询数据库显示第一条数据
def query_one(self, table):
sql = 'select * from %s' % table
self.cursor.execute(sql)
r = self.cursor.fetchone()
return r
# 查询数据库显示全部数据
def query_all(self, table):
sql = 'select * from %s' % table
self.execute_sql(sql)
# 自由查询
def query_free(self, sql):
self.execute_sql(sql)
# del魔法方法,销毁对象,自动调用
def __del__(self):
self.cursor.close()
self.conn.close()
# print('内存中删除了奥')
# 增删改查用
def dml_free(self, sql):
self.cursor.execute(sql)
self.conn.commit()
@staticmethod
def power_menu():
print('''
query_one:查询数据表,只显示第一条数据,
query_all:查询数据表,并显示全部数据,
query_free:查询语句超出上面两个范围时使用
dml_free:增啥改查时使用
''')
def main():
m = MyDb('demo')
# m.query_all('classes')
# m.query_free('select * from students where age between 18 and 25')
# m.query_free('show tables')
# m.dml_db('insert into classes(name) values("小新班")')
# m.dml_free('delete from classes where id between 5 and 7')
# m.query_all('classes')
m.power_menu()
if __name__ == '__main__':
main()
import sql_query as sc
a = sc.MyDb('demo')
a.query_all('students')
# (1, 'iron man', 28, Decimal('179.99'), '男', 1, datetime.date(2020, 1, 1), 1)