添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

数据库操作是每一门编程语言中都必不可少的操作。

使用程序操作数据库之前,需要在本地或服务器先安装数据库,比如 MySQL 数据库。

Python 中使用第三方模块 PyMySQL 操作数据库,使用前需要先进行安装。

安装 PyMySQL

pip install pymysql

使用 PyMySQL 模块操作数据非常简单,步骤如下:

  • 连接数据库
  • 创建游标对象
  • 执行数据库操作
  • 关闭游标对象
  • 关闭数据库连接
  • import pymysql
    

    连接关闭数据库

    操作数据库之前,需要先进行数据库连接,和使用其它方式操作数据库方式相同。

    PyMySQL 模块提供了四个连接数据库的函数名,其本质是多个变量的函数引用横等赋值,最终还是执行一个函数。

    官方代码:

    Connect = connect = Connection = connections.Connection
    

    按代码的赋值顺序,推荐使用 Connect 方式连接,其它函数使用方式相同。

    连接数据库函数格式及主要参数如下:

    Connect(host, port, user, password, database, charset)
    
  • host:数据库主机的地址,默认为 localhost
  • port:数据库的端口号,默认为 3306
  • user:连接数据库所用的用户名。
  • password:连接数据库所用的密码。
  • database:要连接的数据库的名称。
  • charset:连接数据库时使用的字符集,默认为 utf8
  • 目前本机已存在数据库 newcms 及数据库中的数据表。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    print(db_connect)
    db_connect.close()
    

    数据库使用完毕后,需要调用 close() 方法将数据库连接对象关闭,让其断开数据库连接,避免资源泄漏。

    获取和关闭游标对象

    数据库连接对象创建成功后,还需要创建游标对象。

    游标对象的作用是用来执行数据库操作,在执行完一次操作后,应调用 close() 方法将游标对象关闭。

    在进行数据库操作时,每次数据库操作都应该建立一个游标对象,在操作完毕后将其关闭,不应使用一个游标对象进行多次操作。

    PyMySQL 模块使用 数据库连接对象.cursor() 方法获取游标对象。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    print(cursor)
    cursor.close()
    db_connect.close()
    

    执行 SQL 操作

    PyMySQL 模块使用 execute() 方法执行 SQL 语句,实现数据库操作。

    游标对象.execute(query, args=None)
    
  • query:需要执行的 SQL 语句
  • args:为 SQL 语句中的占位符提供参数,防止 SQL 注入的发生
  • import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    cursor.execute("select * from class")
    cursor.close()
    db_connect.close()
    

    查询单条记录

    使用 execute 执行完毕 SQL 语句后, 可以使用 游标对象.fetchone() 方法获取一条查询结果。

    fetchone() 方法可重复使用,程序会继续向后读取查询结果。如果无查询结果可读取,则返回 None

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    cursor.execute("select * from class")
    result = cursor.fetchone()
    print(result)
    result = cursor.fetchone()
    print(result)
    cursor.close()
    db_connect.close()
    

    查询多条记录

    可以使用 游标对象.fetchall() 方法获取全部查询结果。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    cursor.execute("select * from class")
    result = cursor.fetchall()
    print(result)
    cursor.close()
    db_connect.close()
    

    查询指定条数记录

    可以使用 游标对象.fetchmany(size) 方法获取指定数量查询结果。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    cursor.execute("select * from class")
    result = cursor.fetchmany(5)
    print(result)
    cursor.close()
    db_connect.close()
    

    执行插入操作同样使用 execute() 方法,插入数据时的 SQL 语句中的新数据,可以使用传参的方式填 入。

    参数可以使用 元组列表 形式传入。

    在插入数据操作完成后,需要对所做的更改操作进行提交。

    提交操作使用 数据库连接对象.commit() 方法。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    insert_sql = ''' insert into class(name,sort,type) values(%s, %s, %s) '''
    values = ("创业宝典", 9, 0)
    result = cursor.execute(insert_sql,values)
    print(result)
    db_connect.commit()
    cursor.close()
    db_connect.close()
    

    更新操作同插入操作,只是 SQL 语句不同,操作完毕后,需要执行提交操作。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    insert_sql = ''' update class set name=%s,sort=%s where id=%s'''
    values = ("创业成功宝典", 99, 10)
    result = cursor.execute(insert_sql,values)
    print(result)
    cursor.close()
    db_connect.commit()
    db_connect.close()
    

    删除操作同插入操作和更新操作,只是 SQL 语句不同,操作完毕后,需要执行提交操作。

    import pymysql
    db_connect = pymysql.Connect(host="localhost", port=3306, user="root", password="123123123", database="cms", charset="utf8")
    cursor = db_connect.cursor()
    insert_sql = ''' delete from class where id=%s'''
    values = (10,)
    result = cursor.execute(insert_sql,values)
    print(result)
    cursor.close()
    db_connect.commit()
    db_connect.close()