想要用Python操作mysql需要引入pymysql模块
1. 下面是一个用Python写的简单的mysql查询操作
# 导入pymysql模块
import pymysql
# 获取连接
coon=pymysql.connect(host="localhost",
db="db_test",
user="root",
password="root",
port=3306,
charset="gbk")
# 获取游标
cursor=coon.cursor()
sql="select * from blog where name=%s"
try:
#返回值是影响的行数
count=cursor.execute(sql,("weather",))
# 手动提交事务
coon.commit()
except Exception as e:
# 回滚数据
coon.rollback()
print(count)
实现其他的SQL语句和上述操作差不多,这里不做介绍。
2. 下面是写的一个python操作mysql的方法,对上述步骤进行了简单的封装
import pymysql
coon = pymysql.connect(host="localhost", user="root", password="root", db="db_date", port=3306)
def add_update_del_seek(sql,*args):
# print(args)
cursor = coon.cursor()
try:
# count的是影响的行数
count = cursor.execute(sql, args)
coon.commit()
"""
fetchall 返回所有的查询结果 fetchone只返回一条查询的结果 这里选用fetchall
当然你也可以用fetchone但它最多只返回一条查询语句
"""
data = cursor.fetchall()
# 如果是增删改的话,返回的结果是一个元组,如果是查的话返回的结果是一个嵌套的元组
return count, data
except Exception as e:
coon.rollback()
finally:
coon.close()
此时t1的表的结构如下:
表的数据有:
由于表t1的引擎是innodb,所以在一条sql语句对某行进行操作时,是禁止其他语句对它操作的。
下面我们用add_update_del_seek( )方法对表t1进行简单的操作:
2.1 向表内增加内容
sql = "insert into t1 values(%s,%s,%s)"
print(add_update_del_seek(sql, "tom", 18, "nan"))
运行结果是:
(1, ())
此时t1内有如下数据:
2.2 修改表内的内容
修改tom的年龄
sql = "update t1 set age=19 where name=%s"
print(add_update_del_seek(sql, "tom"))
运行结果:
(1, ())
此时t1内有如下数据:
2.3 删除表的内容
删除tom的信息
sql = "delete from t1 where name=%s"
print(add_update_del_seek(sql, "tom"))
运行结果如下:
(1, ())
此时t1内有如下数据:
2.4 下面进行表的查找
t = "select * from t1 where age=%s"
print(add_update_del_seek(t, 18))
运行结果如下
(2, (('jane', 18, 'nv'), ('liming', 18, 'nan')))
3. 下面一个为mysql编写的类,为了简化Python对mysql的操作
和2的操作类似,这里不再进行相关的操作
"""
sqlHerper ,一个python调用mysql的封装模块
用于封装大量重复的代码,减少代码的书写
作业:简略描述经典类和新式的类区别?
"""
import pymysql
class SqlHelper(object):
def __init__(self, host, db, user, pwd, port=3306, charset='utf8'):
"""
:param host: 主机ip地址或者域名
:param db: 该主键的对应的数据库
:param user: 该数据库的用户名称
:param pwd: 该数据库的用户密码
:param port: 该主键的对应的数据库的端口,默认是3306
:param charset: 连接mysql时的编码,默认使用utf8
"""
self.host = host
self.db = db
self.user = user
self.pwd = pwd
self.port = port
self.charset = charset
self.conn = None
self.cursor = None
def __getConn(self):
"""
获取连接对象和游标对象
"""
self.conn = pymysql.connect(host=self.host, db=self.db, user=self.user, password=self.pwd, port=self.port, charset=self.charset)
self.cursor = self.conn.cursor()
def queryOne(self, sql, params=[]):
self.__getConn()
count = self.cursor.execute(sql, params)
data = self.cursor.fetchone()
self.closeResource()
return count, data
def queryAll(self, sql, params=[]):
self.__getConn()
count = self.cursor.execute(sql, params)
data = self.cursor.fetchall()
self.closeResource()
return count, data
def update(self, sql, params=[]):
self.__getConn()
try:
count = self.cursor.execute(sql, params)
self.conn.commit()
return count
except Exception as e:
self.conn.rollback()
print("发生错误:", e)
return None
finally:
self.closeResource()
def closeResource(self):
if self.cursor != None:
self.cursor.close()
if self.conn != None:
self.conn.close()