首页 > 技术文章 > python 爬虫 -pymysql连接mysql数据库

handsome-black 2021-12-16 09:07 原文

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语句是最容易出错的

推荐阅读