下面就来介绍python使用pymysql库连接数据库
安装pymysql
pip install pymysql
首先第一步是连接数据库驱动,有了驱动后就可以对数据库进行增删改查,其中增删改操作的时候需要手动提交commint(),否则代码失效,当然pymysql也可以设置自动提交!
连接数据库驱动
下面的autocommit参数可以不写,不写的话增删改就要自己手动提交
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = '数据库名', # 数据库
autocommit = True # 自动commit提交
)
return db
查询语句
import pymysql
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = 'demo', # 数据库
autocommit = True # 自动commit提交
)
return db
def selectDb():
# 获得数据库驱动
db = getDrive()
# 创建游标对象
cursor = db.cursor()
sql = "select * from `test`"
res = ''
count = ''
try:
count = cursor.execute(sql) # 查询的条数
data = cursor.fetchall() # 查询到的数据,以元组或元组嵌套形式返回的
# 没开自动提交commint,增删改操作需要添加下面操作
# db.commit()
print("数据查询成功")
except Exception as e:
db.rollback() # 若出现失败,进行回滚
print("数据查询失败")
print(e)
finally:
cursor.close()
db.close()
res = {
'count':count,
'data':data
}
return res
if __name__ == "__main__":
res = selectDb()
for re in res['data']:
print(re)
下面介绍几个函数的含义
- fetchone(): 获取第一条数据
- fetchone(): 获取前几条数据
- fetchall(): 获取全部数据
添加语句
添加数据有单条添加也有批量添加
单条添加 execute()
import pymysql
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = 'demo', # 数据库
autocommit = True # 自动commit提交
)
return db
def insertDb():
# 获得数据库驱动
db = getDrive()
# 创建游标对象
cursor = db.cursor()
# 这里需要注意表和字段的引号不是单引号,用单引号会报错!!!
sql = "INSERT INTO `test` ( `username`, `password`) VALUES ('wangwu','123')"
try:
re = cursor.execute(sql)
# 没开自动提交commint,增删改操作需要添加下面操作
# db.commit()
print(re)
print("数据添加成功")
except Exception as e:
db.rollback() # 若出现失败,进行回滚
print("数据添加失败")
print(e)
finally:
cursor.close()
db.close()
if __name__ == "__main__":
res = insertDb()
批量添加 executemany()
其中executemany()第二个参数可以是列表或者元组
import pymysql
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = 'demo', # 数据库
autocommit = True # 自动commit提交
)
return db
def insertDb():
# 获得数据库驱动
db = getDrive()
# 创建游标对象
cursor = db.cursor()
lists = [
['lisi','123'],
['wangwu','123']
]
sql = "INSERT INTO `test` ( `username`, `password`) VALUES (%s,%s)"
try:
re = cursor.executemany(sql,lists)
# 没开自动提交commint,增删改操作需要添加下面操作
# db.commit()
print(re)
print("数据添加成功")
except Exception as e:
db.rollback() # 若出现失败,进行回滚
print("数据添加失败")
print(e)
finally:
cursor.close()
db.close()
if __name__ == "__main__":
res = insertDb()
更新语句
import pymysql
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = 'demo', # 数据库
autocommit = True # 自动commit提交
)
return db
def updateDb():
# 获得数据库驱动
db = getDrive()
# 创建游标对象
cursor = db.cursor()
table = 'test'
id = '1'
password = '123456'
sql = "UPDATE %s SET password = '%s' WHERE id = '%s'" % (table, password, id)
try:
re = cursor.execute(sql)
# 没开自动提交commint,增删改操作需要添加下面操作
# db.commit()
print(re)
print("更新数据成功")
except Exception as e:
db.rollback() # 若出现失败,进行回滚
print("更新数据失败")
print(e)
finally:
cursor.close()
db.close()
if __name__ == "__main__":
res = updateDb()
删除语句
import pymysql
# 连接数据库驱动
def getDrive():
db = pymysql.connect(
host ='127.0.0.1', # 主机名
user = 'root', # 用户名
password = '你的密码', # 密码
database = 'demo', # 数据库
autocommit = True # 自动commit提交
)
return db
def deleteDb():
# 获得数据库驱动
db = getDrive()
# 创建游标对象
cursor = db.cursor()
sql = "DELETE FROM `test` WHERE `id` = 7"
try:
re = cursor.execute(sql)
# 没开自动提交commint,增删改操作需要添加下面操作
# db.commit()
print(re)
print("删除数据成功")
except Exception as e:
db.rollback() # 若出现失败,进行回滚
print("删除数据失败")
print(e)
finally:
cursor.close()
db.close()
if __name__ == "__main__":
res = deleteDb()
注意:sql语句中需要更改的数据不管什么类型,统一使用%s作为占位符,不需要加引号