python 连接和操作 mysql 数据库
1 下载安装 pymysql 库
-
pip install pymysql
2 导入 pymysql 库
-
import pymysql
3 连接 Mysql 数据库
-
语法:pymysql.counect(host, user, password, db, port,……))
- 这些是必要参数:
- host:数据库地址,默认写本地localhost
- user:用户名
- password:密码
- db:连接的数据库名(需要已经建立的数据库,否则可能报错)¥
- port端口
- 这些是必要参数:
-
例如:
db = pymysql.connect(host="localhost",user="root",password="root",db="spider",port=3306)
- 连接数据库时最好用
try-except
捕获异常- 建立
try-except
快捷键:Ctrl+Alt+T(有的电脑可能是Ctrl+Alt+Win+T)
- 建立
- 连接数据库后常用方法
方法 | 说明 | 举例 |
---|---|---|
cursor()¥ | 创建游标 | cur = db.cursor() 创建一个db的cur游标 |
close()¥ | 关闭游标 | |
fetchone() | 得到结果集的下一行 | |
fetchall() | 得到结果集中剩下的所有行 | |
excute(sql[, args]) | 执行一个sql操作(查询或命令) | cur.excute(sql1) 执行sql1这个sql命令并将结果存放在cur游标中 |
executemany (sql, args) | 执行多个 sql 操作 |
4 创建游标对象
-
什么是游标
- 一种能从包括多条数据记录的结果集中每次提取一条记录的机制。同时游标也能用来充当指针的作用。对于游标,可以简单地理解为用来存放SQL查询结果。
-
创建游标
语法格式:链接数据库后的变量名.cursor( )
- 例如:
cur = db.cursor() #创建游标
- 同时游标使用遵循“五步法”:声明游标—>打开游标—>读取数据—>关闭游标—>删除游标
- 关闭游标和删除游标
- 两种都会释放资源,但是前者没有把游标运行所占用的内存空间释放,如果删除了游标再想用游标,必须从新建立。
- 关闭游标和删除游标
5 生效 sql 命令
-
使用 python 操作 mysql 数据库有些操作需要 commit 命令生效 ¥
- update,delete,insert 等修改表中数据的需要 commit
- create,drop,alter 等修改表结构的就不需要 commit,因为内部隐藏了 commit
-
生效sql命令
语法格式:连接数据库后的变量名.commit()
- 例如:
sql1 = "INSERT INTO test0614 VALUES (%s)" % (di[:-1]) # 将整合好的字符串数据插入数据表test0614中
cur.execute(sql1) # 执行插入语句
db.commit() # 执行commit操作,插入语句才能生效(操作对象是数据库,不是游标)
6 关闭数据库链接
方法格式:close()
- 例如:
db.close()
7 从创建到删除一条龙服务 实例
import pymysql
# 连接数据库
#数据库中最好不要将数据写入方法
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'root'
DBNAME = 'dbtest'
#创建数据库,最好用try except捕获异常
try:
db = pymysql.connect(DBHOST, DBUSER, DBPASS, DBNAME)
print('数据库连接成功!')
except pymysql.Error as e:
print('数据库连接失败'+str(e))
#创建表
#声明一个游标
cur = db.cursor()
#创建表之前先检查是否存在,如果存在则删除
cur.execute('DROP TABLE IF EXISTS Student')
#编辑sql语句
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
#执行sql命令
cur.execute(sqlQuery)
#向表中插入一条数据
#编辑数据
sqlQuery=" INSERT INTO Student (Name, Email, Age) VALUE (%s,%s,%s) "
#编辑准备插入的值
value=('Mike','123456@163.com',20)
#执行sql语句
try:
cur.execute(sqlQuery,value)
#生效sql命令
db.commit()
print('数据插入成功!')
except pymysql.Error as e:
print(e)
db.rollback()
#查询表中的数据(略)。基本步骤是一样的:编辑sql命令、生效命令
#更新表中数据步骤同理,原理类似覆盖
#删除表中的数据步骤同上
#删除一张表
#编辑sql语句
sqlQuery='DROP TABLE IF EXISTS Student'
#提交修改
cur.execute(sqlQuery)
print('表删除成功!')
#关闭游标
cur.close()
#关闭数据库
db.closq()
8 其他
- 在所有步骤中个人认为编写sql语句是最容易出错的