# 导入pymysql模块
import pymysql
"""
# 添加下面两句,那么3可以向下兼容2
pymysql.install_as_MySQLdb()
import MySQLdb
# 创建一个连接对象,再使用创建游标
con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', db='mysql')
cursor = con.cursor()
"""
class dataMysql(object):
# 定义要执行的SQL语句
"""
1 创建表一般不用原生sql
2 对数据库执行查询操作
3 对数据库增加和修改数据
4 对数据库删除操作
"""
def __init__(self, ip=None, user=None, password=None, database=None):
self.conn = pymysql.connect(host=ip, user=user, password=password, database=database, charset="utf8")
self.cursor = self.conn.cursor()
def change_data_mysql(self, sql, parameter, get=None, data=None):
"""
修改数据,增,修改,删除可共用方法
:param cursor:
:param sql:
:return:
"""
result = ''
try:
if data:
self.cursor.executemany(sql, data) # 使用executemany做批量处理
else:
self.cursor.execute(sql, parameter)
if get:
result = self.cursor.fetchall()
else:
self.conn.commit() # 提交修改数据
last_id = self.cursor.lastrowid # 变动数据的id
except Exception as e:
self.conn.rollback()
print(e)
return result
def get_data_from_mysql(self, sql, parameter):
"""
从数据库查看数据
:return:
"""
try:
ret = self.cursor.execute(sql, parameter) # 返回受影响行数
if ret:
result = self.cursor.fetchall() # fetchall/fetchone 取数据
else:
result = '没有获取到数据'
self.conn.commit() # 提交修改数据
except Exception as e:
result = e
return result
def insert_data_mysql(self, sql, parameter):
"""
向数据库插入数据 # sql = "insert into tb_heros (hname,hgender,hcomment,is_delete,hbook_id) values(%s,%s,%s,%s,%s);"
# data = ((hname,hgender,hcomment,is_delete,hbook_id),(hname,hgender,hcomment,is_delete,hbook_id))
cursor.executemany(sql, data) # 使用executemany做批量处理
:param cursor:
:return:
"""
try:
self.cursor.execute(sql, parameter)
# cursor.executemany(sql, 'data') # 使用executemany做批量处理
self.conn.commit() # 插入数据
last_id = self.cursor.lastrowid # 插入的这条数据的id
print(last_id)
except Exception as e:
self.conn.rollback()
print(e)
def delete_data_mysql(self, sql, parameter):
"""
删除数据
:param cursor:
:param sql:
:return:
"""
try:
self.cursor.execute(sql, parameter)
self.conn.commit() # 提交修改数据
except Exception as e:
self.conn.rollback()
print(e)
def update_data_mysql(self, sql, parameter):
"""
更新数据sql="update tb_heros set is_delete=%s where id=%s;" % (1,25)
:param cursor:
:param sql:
:return:
"""
try:
self.cursor.execute(sql, parameter)
self.conn.commit() # 提交修改数据
except Exception as e:
self.conn.rollback()
print(e)
obj_mysql = dataMysql(ip="127.0.0.1", user="root", password="itcast", database="django_demo")
sql = "select * from tb_heros where hname= %s and is_delete=%s;"
parameter = ['郭靖', 0]
# sql = "select * from tb_heros where hname= %s and is_delete=%s;"
# sql="delete from tb_heros where id=%s;"
# parameter = [24]
result = obj_mysql.get_data_from_mysql(sql, parameter=parameter)
result2 = obj_mysql.change_data_mysql(sql, parameter=parameter, get=True, data=None)
print(result)
print(result2)