以下代码是我封装好的一个类,有需要的可以拿去使用!!!
import pymysql
class MysqlAPI(object):
def __init__(self):
self.conn = self.get_conn()
def get_conn(self): # 初始化连接
try:
conn = pymysql.connect(
host = '127.0.0.1',
user = '******',
password ='******',
db = 'news',
charset = 'utf8',
port = 3306
)
return conn
except pymysql.Error as e:
return '连接出错:{}'.format(e)
def get_one(self): # 查询一条数据
sql = 'select * from news;' # 准备sql语句
cursor = self.conn.cursor() # 获取cursor
cursor.execute(sql) # 执行sql语句
col_list = [i[0] for i in cursor.description] # 获取列名列表
value_list = list(cursor.fetchone()) # 获取值的列表
result = dict(zip(col_list, value_list)) # 转化为字典
cursor.close()
self.conn_close()
return result
def get_more(self): # 获取多条数据
sql = 'select * from news;' # 准备sql语句
cursor = self.conn.cursor() # 获取cursor
cursor.execute(sql) # 执行sql语句
col_list = [i[0] for i in cursor.description] # 获取列名列表
result = [dict(zip(col_list, row)) for row in cursor.fetchall()] # 转化为字典
cursor.close()
self.conn_close()
return result
def paginator(self, page, num): # 定义一个分页算法
offset = (page - 1)*num
sql = 'select * from news limit %s, %s;' # 准备sql语句
cursor = self.conn.cursor() # 获取cursor
cursor.execute(sql, (offset, num)) # 执行sql语句
col_list = [i[0] for i in cursor.description] # 获取列名列表
result = [dict(zip(col_list, row)) for row in cursor.fetchall()] # 转化为字典
cursor.close()
self.conn_close()
return result
def add_one(self):
try:
sql = 'insert into `news` (`title`, `content`, `type`, `image`, `author`) VALUE (%s, %s, %s, %s, %s);'
cursor = self.conn.cursor()
cursor.execute(sql, ('我是谁', '内容不重要', '你猜', '/image/1.jpg', '天下无双'))
self.conn.commit()
cursor.close()
except:
print('error')
self.conn.rollback() # 当插入语句出错时,则不会执行语句
self.conn.close()
print('插入数据成功!')
def conn_close(self):
try:
if self.conn:
self.conn.close()
except pymysql.Error as e:
print('关闭连接出错:{}'.format(e))
if __name__ == '__main__':
# for i in range(4):
# demo = MysqlAPI()
# page = int(input('请输入要查询的页数:'))
# num = int(input('请输入每页显示多少条数据:'))
# result = demo.paginator(page,num)
# print(result)
demo = MysqlAPI()
demo.add_one()