当前位置: 首页 > news >正文

php电商网站开发的优势成都网站建设方案托管

php电商网站开发的优势,成都网站建设方案托管,犀浦网站建设,程序开发平台pymysql 数据库概述python对数据库的增删改查pymysql核心操作事务事务操作pymysql工具类封装每日复习ChatGPT的回答 数据库概述 分类 关系型数据库: 安全 如, mysql oracle SQLite…database tables 行列 非关系型数据库: 高效 如, redis mongoDB…数据存储结构多样 键值对…

pymysql

    • 数据库概述
    • python对数据库的增删改查
    • pymysql核心操作事务
    • 事务操作
    • pymysql工具类封装
    • 每日复习
    • ChatGPT的回答

数据库概述

分类

关系型数据库: 安全

  • 如, mysql oracle SQLite…
  • database tables 行+列

非关系型数据库: 高效

  • 如, redis mongoDB…
  • 数据存储结构多样 键值对, 列表, 字符串…

python操作数据库

第一步导包

python(等各种编程语言)本身不具备直连数据库的功能, 必须导入第三方包

在线安装

  • 命令行运行 pip install pymysql 回车

  • 出现 Successfully installed xxxx 字样, 代表安装成功

  • 校验

    • 命令行运行 pip list 回车
    • 列表中查找到 pymysql 和 版本号 就说明安装成功

第二步连接流程

# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="text", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
print("桥", myConn)
print("驴", lv)
# 4.核心操作: 发送sql语句
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

连接成功
在这里插入图片描述

python对数据库的增删改查

    1. 编写sql语句
    1. 执行sql语句 游标对象.execute(要执行的语句)
  • \3. 获取响应结果
    • 获取响应结果行数 游标对象.rowcount
    • 逐行获取数据 游标对象.fetchone()返回一个元组
    • 获取所有数据 游标对象.fetchall(返回一个元组
# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="text", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
# 4.核心操作: 发送sql语句(查询)
# 4.1 编写sql语句
sql = "SELECT * FROM t_area"
# 4.2 执行sql
lv.execute(sql)
# 4.3 获取响应结果
# 4.3.1 获取相应结果行数
print("响应结果行数:", lv.rowcount)
# 4.3.2 逐行获取数据
# row1 = lv.fetchone()
# row2 = lv.fetchone()
# row3 = lv.fetchone()
# row4 = lv.fetchone()
# row5 = lv.fetchone()
# print("第1行数据:", row1)
# print("第2行数据:", row2)
# print("第3行数据:", row3)
# print("第4行数据:", row4)
# print("第5行数据:", row5)
# 4.3.3 获取所有数据
rows = lv.fetchall()
print("所有数据:", rows)
for row in rows:print("每一条:", row)print("id", row[0])print("区域名称", row[1])print("优先级", row[2])print("创建时间", row[3])print("更新时间", row[4])
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

在这里插入图片描述

# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="text", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
# 4.核心操作: 发送sql语句(增------------------------------)
# 4.1 编写sql语句
sql = "insert into t_area(area_name, priority) values('咚咚咚', '123')"
# 4.2 执行sql
lv.execute(sql)
myConn.commit()
# 4.3 获取响应结果
print("响应结果行数:", lv.rowcount)
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="test", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
# 4.核心操作: 发送sql语句(改------------------------------)
# 4.1 编写sql语句
sql = "update t_area set area_name='嘻嘻嘻' where area_id=28"
# 4.2 执行sql
lv.execute(sql)
myConn.commit()
# 4.3 获取响应结果
print("响应结果行数:", lv.rowcount)
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

删除

# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="test", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
# 4.核心操作: 发送sql语句(删------------------------------)
# 4.1 编写sql语句
sql = "delete from t_area where area_id=28"
# 4.2 执行sql
lv.execute(sql)
myConn.commit()
# 4.3 获取响应结果
print("响应结果行数:", lv.rowcount)
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

pymysql核心操作事务

  • 特征(面试常见)

    • 原子性 事务中包含的操作被看作一个逻辑单元, 这个单元中的操作要么都成功, 要么都失败
    • 一致性 逻辑单元中的操作不应该一部分成功一部分失败
    • 孤立性 事务的中间状态对其他事务是不可见的
    • 持久性 指一个事务一旦提交成功, 它对数据库中数据的改变应该是永久性的
  • 事务提交机制

    • 概念
      • 提交: commit, 将修改写入数据库
      • 回滚: rollback, 拒绝将修改写入数据库
    • 方式
      • 手动提交[推荐] 连接对象.commit()
      • 自动提交 创建连接时设置 autocommit=True

    事务操作

    • 需求 向 t_area 表插入信息, 先插入A, 再插入B, 要么都成功, 要么都失败
    • 前提
      • MyISAM 不支持事务(旧版mysql的默认引擎)
      • InnoDB 支持事务(较新版本mysql的默认引擎)
    • 修改数据库引擎
      • 执行 show ENGINES 查看当前 mysql 支持的引擎都有哪些
      • 执行 ALTER TABLE t_area ENGINE=INNODB 修改表 t_area 的引擎为 InnoDB
    • 流程 用 try 语句控制
# 1.导包
import pymysql
# 2.创建连接(桥)
myConn = pymysql.Connect(host="127.0.0.1", port=3306, database="test", user="root", password="123456", charset="utf8")
# 3.创建游标(驴)
lv = myConn.cursor()
# 4.核心操作: 发送sql语句(事务------------------------------)
try:sql1 = "insert into t_area(area_name, priority) values('咚咚咚', '111')"sql2 = "insert into t_area(area_name, priority) values('嘻嘻嘻', '222')"# 执行sql1(插入数据A)lv.execute(sql1)# 执行sql2(插入数据B)lv.execute(sql2)# 提交(写入数据库)myConn.commit()
except Exception as e:print("error:", e)# 回滚(拒绝写入数据库)myConn.rollback()
# 5.释放资源(先驴后桥)
lv.close()
myConn.close()

pymysql工具类封装

将获取连接, 获取游标, 以及释放资源这些重复性操作, 进行封装, 需要时, 再调用

"""
实现封装:将 pymysql 的常见用法实现封装进一个专门工具类封装的功能: 1.获取连接 2.获取游标 3.释放资源
"""
import pymysql
class DBUtils:# 工具函数 1.获取连接@classmethoddef get_conn(cls):return pymysql.Connect(host="127.0.0.1", port=3306, database="text", user="root", password="123456", charset="utf8")# 工具函数 2.获取游标@classmethoddef get_cursor(cls, conn):return conn.cursor()# 工具函数 3.释放资源@classmethoddef close_res(cls, cursor, conn):if cursor:cursor.close()if conn:conn.close()
"""
实现调用:以查询数据库为例, 调用工具类中封装的功能
"""
# 导包
from pymysql_19 import DBUtils
# 调用获取连接的工具函数
conn = DBUtils.get_conn()
# 调用获取游标的工具函数
lv = DBUtils.get_cursor(conn)
# 核心: 查询为例
sql = "select * from t_area"
lv.execute(sql)
print(lv.fetchall())
# 调用释放资源的工具函数
DBUtils.close_res(lv, conn)

每日复习

  • 能够说出python使用pymysql操作数据库的流程?

  • 使用pymysql做mysql的增删改查操作, 编码步骤有哪些?

  • 实际编写代码完成增删改查的操作?(提交4个脚本)

  • 用举例来说明什么是事务?

  • [面试题]事务有哪些特征?

ChatGPT的回答

好的,让我用一个简单的例子来说明什么是事务。
假设你在银行有两个账户:账户 A 和账户 B。你想要从账户 A 转账 100 美元到账户 B。这个过程涉及两个步骤:

1.从账户 A 中减去 100 美元。
2.将这 100 美元存入账户 B。

在数据库术语中,这两个步骤称为数据库操作。而将它们作为一个整体进行处理的过程就称为事务。
现在,让我们看看事务的属性:

3.原子性(Atomicity):事务应该是原子的,意味着它们应该被视为一个单独的、不可分割的工作单元。在我们的例子中,原子性意味着要么账户 A 减去 100 美元,同时账户 B 增加 100 美元,要么两者都不发生。不会出现只有一个账户发生了变化的情况。
4.一致性(Consistency):事务执行后,数据库应该处于一致的状态。在我们的例子中,这意味着账户 A 和账户 B 的总金额应该保持不变。即使在转账过程中发生了故障,数据库也应该能够通过回滚来保持一致性。
5.隔离性(Isolation):事务的执行应该是隔离的,即一个事务的执行不应该受到其他事务的影响。在我们的例子中,如果同时有另一个转账事务正在进行,它不应该影响我们当前的转账事务。这意味着每个事务应该像在单独的环境中执行一样。
6.持久性(Durability):一旦事务被提交,其结果应该是永久性的,即使系统发生故障。在我们的例子中,一旦转账事务完成并提交,账户 A 和账户 B 的余额变化应该是永久性的,即使系统在此之后发生故障,这两个账户的余额也不应该恢复到转账前的状态。

和账户 B 的总金额应该保持不变。即使在转账过程中发生了故障,数据库也应该能够通过回滚来保持一致性。
5.隔离性(Isolation):事务的执行应该是隔离的,即一个事务的执行不应该受到其他事务的影响。在我们的例子中,如果同时有另一个转账事务正在进行,它不应该影响我们当前的转账事务。这意味着每个事务应该像在单独的环境中执行一样。
6.持久性(Durability):一旦事务被提交,其结果应该是永久性的,即使系统发生故障。在我们的例子中,一旦转账事务完成并提交,账户 A 和账户 B 的余额变化应该是永久性的,即使系统在此之后发生故障,这两个账户的余额也不应该恢复到转账前的状态。

综上所述,事务是数据库管理系统中用来确保数据的完整性和一致性的重要概念。在数据库中执行的每个操作都应该被认为是一个事务,并且应该满足事务的 ACID 属性。

http://www.yayakq.cn/news/601263/

相关文章:

  • 微网站开发公司网站 制作登录
  • 在自己的网站里做讲课视频电子商务网站有哪些类型
  • 网站开发后台的问题上海怎么建设网站
  • 怎么创建个人网站潍坊网站建设中公
  • 怎样查询网站备案号国内国际新闻最新消息10条
  • 安徽城乡建设局网站网站上怎么做推广
  • 秦皇岛网站建设费用南宁网站建设制作定制
  • 思维导图在线制作网站专业搭建网站
  • 网站排版怎么做新浪云 wordpress
  • 网站研发费用吗郑州手机网站制作公司哪家好
  • 珠海网站建设模板wordpress适合电影网站的模板下载
  • 自己做的网站怎么显示表格边框宣武网站建设服务
  • 翻译网站建设方案重庆市建设网站公司
  • 贵阳做网站seo网站建设目的和意义
  • 门户网站开发使用什么语言做的网站百度找不到
  • 网站开发 请示夏朝是谁建立的
  • 保健品网站建设策划书网站图标目录
  • 公司网站功能模块网站制作模板程序
  • 深圳定制网站建设青岛开发网站
  • 深圳西丽网站建设公司织梦dedecms网站更换域名后文章图片路径批量修改
  • 微网站免费建站系统wordpress很慢
  • 怎么制作游戏需要什么软件沈阳网站关键词优化做的好吗
  • 安徽华强建设集团网站清远网站seo公司
  • 做盗版影视网站违法吗wordpress 魅族
  • 建设一个网站需要什么软件揭阳网站制作价格
  • 普通网站 多大空间中国免费域名注册平台
  • 用asp做网站题目做网站哪个公司可以做
  • 自己建设网站赚钱怎么建设商城网站
  • 如何设置网站标题网页生成图片
  • 企业固定ip做网站网站对不同分辨率