等峰也等你

博客园 首页 新随笔 联系 订阅 管理

数据库操作

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

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

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

安装 PyMySQL

pip install pymysql

操作流程

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

  1. 导入模块
  2. 连接数据库
  3. 创建游标对象
  4. 执行数据库操作
  5. 关闭游标对象
  6. 关闭数据库连接

导入模块

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()
posted on 2024-01-16 16:10  等峰也等你  阅读(7)  评论(0编辑  收藏  举报