Python第二语言(十二、SQL入门和实战)

目录

1. Python中使用MySQL

1.1 pymysql第三方库使用MySQL

1.2 连接MySQL

1.3 操作数据库,创建表

1.4 执行查询数据库语句

2. python中MySQL的插入语句

2.1 commit提交

2.2 自动提交

3. pymysql案例

3.1 数据内容

3.2 DDL定义

3.3 实现步骤

3.4 文件操作


1. Python中使用MySQL

1.1 pymysql第三方库使用MySQL
  • 除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库;
  • 在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作;
  • 安装 pip install pymysql;
1.2 连接MySQL
# 导入pymysql包
from pymysql import Connection

# 获取到MySQL数据库连接对象
conn = Connection(
    host='127.0.0.1',
    port=13306,
    user='root',
    password='123456',
)

print(conn.get_server_info())
conn.close()

1.3 操作数据库,创建表
from pymysql import Connection
# 1.获取MySQL连接
coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456'
)
# 2.获取游标对象
cursor = coon.cursor()
coon.select_db("demo")  # 3.use数据库
# 4.使用游标对象,执行sql
cursor.execute("CREATE TABLE test_pymysql(id INT, info VARCHAR(225))")
# 5.关闭数据库连接
coon.close()

1.4 执行查询数据库语句

数据库数据:

代码:

from pymysql import Connection

# 1.获取MySQL连接
coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456'
)
# 2.获取游标对象
cursor = coon.cursor()
coon.select_db("demo")  # 3.use数据库
# 4.使用游标对象,执行sql
execute = cursor.execute("SELECT * FROM test_pymysql")
# 获取查询结果
results: tuple = cursor.fetchall()
for r in results:
    print(r)
# 5.关闭数据库连接
coon.close()

小结:

  1. Python中使用pymysql第三方库来操作MySQL;
    • 安装:pip install pymysql
  2. 获取链接对象:
    • from pymysql import Connection 导包;
    • Connection(主机,端口,账户,密码)即可得到链接对象;
    • 链接对象.close()关闭和MySQL数据库的连接
  3. 执行SQL查询:
    • 通过连接对象调用cursor()方法,得到游标对象;
    • 游标对象.execute()执行SQL语句;
    • 游标对象.fetchall()得到全部的查询结果封装从元组内

2. python中MySQL的插入语句

2.1 commit提交

在pymysql中,执行数据插入或其它产生数据更改SQL语句时,默认是需要commit提交更改的;

# 执行sql
cursor.execute("INSERT INTO test_pymysql VALUES(6, '这是插入')")
# 提交
coon.commit()

2.2 自动提交

autocommit=True # 设置自动提交

插入结果:

3. pymysql案例

  • 案例需求:使用python语言,读取数据,并将数据写入到MySQL;
3.1 数据内容
  • 6月份数据是普通文本,使用逗号分割数据记录,从前到后分别是(日期,订单id,销售额,销售省份)
  • 7月份数据是JSON数据,同样包含(日期,订单id,销售额,销售省份)
  • 数据参考:Python第二语言(十一、Python面向对象(下))-CSDN博客

3.2 DDL定义

数据库名:demo

建表语句:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL COMMENT '主键',
  `date_time` datetime DEFAULT NULL COMMENT '日期',
  `order_id` varchar(40) DEFAULT NULL COMMENT '订单id',
  `money` int(4) DEFAULT NULL COMMENT '销售额',
  `province` varchar(40) DEFAULT NULL COMMENT '销售省份',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3.3 实现步骤
  1. 读取数据:使用面向对象代码案例;
  2. 封装数据对象:使用面向对象代码案例;
  3. 构建数据库连接;
  4. 写入数据库;
3.4 文件操作

1. all_data数据:

2. 开发工具配置数据库:

3. 遇到ModuleNotFoundError: No module named 'data_define'

需要使用from my_package.orm_data_plan.data_define import Record这个包路径;

4. 插入语句构建:

if __name__ == '__main__':
    text_file_reader = TextFileReader("../file/2024年6月数据")
    json_file_reader = JsonFileReader("../file/2024年7月销售数据JSON")
    data = text_file_reader.read_data()
    data1 = json_file_reader.read_data()
    all_data = data + data1

    sql = ""
    id = 0
    for record in all_data:
        id += 1
        sql = f"INSERT INTO orders VALUES({id}, '{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
        print(sql)

5. 插入案例

  • 解释:获取数据库连接,设置自动提交,配置创建表语句,IF NOT EXISTS表不存在就创建,读取两个文件的内容并合并,加上表id,组装sql,使用execute执行插入语句;
from pymysql import Connection

from my_package.orm_data_plan.file_define import TextFileReader, JsonFileReader

coon = Connection(
    host='localhost',
    port=3306,
    user='root',
    password='123456',
    autocommit=True
)

cursor = coon.cursor()
coon.select_db("demo")

# 创建表的SQL语句
create_table_sql = """
        CREATE TABLE IF NOT EXISTS  `orders` (
            `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
            `date_time` datetime DEFAULT NULL COMMENT '日期',
            `order_id` varchar(40) DEFAULT NULL COMMENT '订单id',
            `money` int(11) DEFAULT NULL COMMENT '销售额',  -- 更改为更合适的int(11)
            `province` varchar(40) DEFAULT NULL COMMENT '销售省份',
            PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
        """
# 执行创建表的SQL语句
cursor.execute(create_table_sql)

text_file_reader = TextFileReader("../file/2024年6月数据")
json_file_reader = JsonFileReader("../file/2024年7月销售数据JSON")
data = text_file_reader.read_data()
data1 = json_file_reader.read_data()
all_data = data + data1

sql = ""
id = 0
for record in all_data:
    id += 1
    sql = f"INSERT INTO orders VALUES({id}, '{record.date}', '{record.order_id}', {record.money}, '{record.province}')"
    print(sql)
    # SQL插入语句
    cursor.execute(sql)

coon.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/706093.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最小生成树kruskal算法详解

kruskal算法的思想简单来说就是:每次选择图中最小边权的边,如果边两端的顶点不在相同的连通块中,就把这条边加入到最小生成树中。 具体实现如下: 首先是边的定义,需要判断边的两个端点是否在不同的连通块中&#xff…

Vue前端ffmpeg压缩视频再上传(全网唯一公开真正实现)

1.Vue项目中安装插件ffmpeg 1.1 插件版本依赖配置 两个插件的版本 "ffmpeg/core": "^0.10.0", "ffmpeg/ffmpeg": "^0.10.1"package.json 和 package-lock.json 都加入如下ffmpeg的版本配置: 1.2 把ffmpeg安装到项目依…

深入探究MySQL游标(Cursor)

前言 MySQL游标(Cursor)是MySQL中用于处理查询结果的一种机制。游标允许我们在查询结果集中逐行处理数据,而不是一次性获取所有数据。这对于处理大量数据非常有用,因为它可以减少内存消耗并提高性能。在MySQL中,游标主…

【源码】【Spring+SpringMVC+MyBatis】电子商城网上购物平台的设计与开发

学生成绩管理系统 系统功能开发环境开发技术前端技术后端技术 系统展示登录界面注册界面系统首页商品详情页下单界面付款界面购物车界面 源码获取↓↓↓↓: 源码可在后台私信联系博主或文末添加博主微信获取帮助 系统功能 登录、注册模块:如果用户第一次…

udp协议下的socket函数

目录 1.网络协议 2.网络字节序 3.socket编译接口 4.sockaddr结构体 5.模拟实现 1.socket函数 2.bind函数&#xff08;绑定&#xff09; 1.讲解 1.如何快速的将 整数ip<->字符串 2.ip地址的注意事项 3.端口号的注意事项 3.recvfrom函数 4.sendto函数 5.代码呈…

C++ Primer 第五版 第16章 模板与泛型编程

模板是C中泛型编程的基础。一个模板就是一个创建类或函数的蓝图或者说公式。当使用一个vector这样的泛型类型&#xff0c;或者find这样的泛型函数时&#xff0c;我们提供足够的信息&#xff0c;将蓝图转换为特定的类或函数。这种转换发生在编译时。 一、定义模板 1. 函数模板…

Airtest 使用指南

Airtest 介绍 准备工作 AirtestIDE 安装与启动: https://airtest.doc.io.netease.com/IDEdocs/getting_started/AirtestIDE_install/ 电脑端的准备工作完成后,对于手机端只需要打开允许USB调试,当首次运行时会提示安装PocoService,同意即可。 界面介绍

【CT】LeetCode手撕—53. 最大子数组和

目录 题目1-思路2- 实现⭐53. 最大子数组和——题解思路 3- ACM 实现 题目 原题连接&#xff1a;53. 最大子数组和 1-思路 动规五部曲 1. 定义 dp 数组 dp[i] 含义为&#xff1a;下标为 i 的数组的最大子数组和 2. 递推公式 因为所求的是最大子数组的和&#xff0c;即当前 n…

群辉其它远程访问方案(Cpolar篇)

目录 1、下载NAS套件安装包 2、手动安装 3、配置 4、访问 &#xff08;1&#xff09;网页 &#xff08;2&#xff09;手机管家 &#xff08;3&#xff09;助手 &#xff08;4&#xff09;DS File 群辉的远程访问&#xff0c;最标准的做法就是使用群辉自己的DDNS&#x…

飞腾派初体验(2)

水个字数&#xff0c;混个推广分&#xff0c;另外几个点还是想吐槽一下 - 1&#xff0c;上篇文章居然没有给开发板一个硬照&#xff0c;补上 - 飞腾派 自拍 2. 现在做镜像用Win32DiskImager的多吗&#xff1f;我记得当年都是dd命令搞定&#xff0c;玩树莓派的应该记得这个命令…

OpenAPI Typescript Codegen 的基本使用

下载 axios npm install axios OpenAPI Typescript Codegen 官网&#xff1a;https://github.com/ferdikoomen/openapi-typescript-codegen 安装 OpenAPI Typescript Codegen npm install openapi-typescript-codegen --save-dev–input&#xff1a;指定接口文档的路径、url …

安装Pygame

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Pygame是跨平台的Python模块&#xff0c;专为电子游戏设计&#xff08;包含图像、声音&#xff09;&#xff0c;创建在SDL&#xff08;Simple Direct…

【HarmonyOS - UIAbility组件和UI的数据同步】

简述 基于HarmonyOS的应用模型&#xff0c;可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信&#xff1a;基于发布订阅模式来实现&#xff0c;事件需要先订阅后发布&#xff0c;订阅者收到消息后进行处理。使用globalThis进行数据同步…

【Linux】进程控制2——进程等待(waitwaitpid)

1. 进程等待必要性 我们知道&#xff0c;子进程退出&#xff0c;父进程如果不管不顾&#xff0c;就可能造成"僵尸进程”的问题&#xff0c;进而造成内存泄漏。另外&#xff0c;进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill -9 也无能为…

Git基础指令(图文详解)

目录 Git概述Git基础指令Linux系统操作指令 Git软件指令1.配置信息2.名称和邮箱3.初始化版本库4.向版本库中添加文件5.修改版本库文件6. 查看版本库文件历史 7.删除文件8.恢复历史文件 Git概述 Git基础指令 Linux系统操作指令 Git是一款免费、开源的分布式版本控制系统&…

MPLS工作过程

数据层面&#xff1a; 1) 没有 MPLS 协议&#xff0c;基于 FIB 表正常转发即可 2) 名词&#xff1a;MPLS domain——MPLS 的工作半径 edge LSR(PE)——边界标签交换路由器 工作 mpls 域的边缘&#xff0c;连接域外设备 …

【Redis】安装和命令行客户端

https://www.bilibili.com/video/BV1cr4y1671t https://www.oz6.cn/articles/58 redis 非结构化有&#xff1a; 键值类型(Redis)文档类型(MongoDB)列类型(HBase)Graph:类型(Neo4j) 扩展性&#xff1a;水平即为分布式扩展 redis特征 键值&#xff08;key-value&#xff09;型…

css实现优惠券样式

实现优惠券效果&#xff1a; 实现思路&#xff1a; 需要三个盒子元素&#xff0c;使用 css 剪裁&#xff0c;利用 ellipse 属性&#xff0c;将两个盒子分别裁剪成两个半圆&#xff0c;位置固定在另一个盒子元素左右两边适当位置上。为另一个盒子设置想要的样式&#xff0c;圆角…

杨氏矩阵和杨辉三角的空间复杂度较小的解题思路

文章目录 题目1 杨氏矩阵题目2 杨辉三角 题目1 杨氏矩阵 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 思路: 我们可以通过题目…

Python学习笔记7:入门知识(七)

前言 之前说过我更换了新的学习路线&#xff0c;现在是根据官方文档和书籍Python crash course来进行学习的&#xff0c;在目前的学习中&#xff0c;对于之前的知识有一些遗漏&#xff0c;这里进行补充。 学习资料有两个&#xff0c;书籍中文版PDF&#xff0c;关注我私信发送…