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

article/2024/7/17 20:47:23

目录

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 + data1sql = ""id = 0for record in all_data:id += 1sql = 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 Connectionfrom my_package.orm_data_plan.file_define import TextFileReader, JsonFileReadercoon = 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 + data1sql = ""
id = 0
for record in all_data:id += 1sql = f"INSERT INTO orders VALUES({id}, '{record.date}', '{record.order_id}', {record.money}, '{record.province}')"print(sql)# SQL插入语句cursor.execute(sql)coon.close()


http://www.ngui.cc/article/show-2169875.html

相关文章

席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!

今天给大家安利一款席卷B站,火爆全网的游戏——《植物大战僵尸杂交版》2.0.88整合包。 这个是网络上现存植物大战僵尸杂交版的最全整合,包含了修改工具,超强通关存档和高清工具。工具包有安装视频教程,支持手机版和pc多端使用&am…

如何训练一个企业邮局系统区分垃圾邮件和非垃圾邮件的私有化模型?用于提高企业的沟通效率

训练一个企业邮局系统区分垃圾邮件和非垃圾邮件涉及多个步骤和技术。以下是一个基本的流程: 1. 数据收集 获取邮件数据 收集样本:获取大量的历史邮件数据,包括标记为垃圾邮件和非垃圾邮件的邮件。标签数据:确保数据集中的每封邮…

arm64架构 统信UOS搭建PXE无盘启动Linux系统(麒麟桌面为例)

arm64架构 统信UOS搭建PXE无盘启动Linux系统(麒麟桌面为例) 搞了好久搞得头疼哎 1、准备服务器UOS服务器 准备服务IP 这里是192.168.1.100 1.1、安装程序 yum install -y dhcp tftp tftp-server xinetd nfs-utils rpcbind 2、修改配置 2.1、修改dhcpd.c…

最实用的AI软件开发工具CodeFlying测评

就在上个月,OpenAI宣布GPT-4o支持免费试用,调用API价格降到5美元/百万token。 谷歌在得到消息后立马将Gemini 1.5 的价格下降到0.35美元/百万token。 Anthropic的API价格,直接干到了0.25美元/百万token。 国外尚且如此,那么国内…

AIGC底层技术介绍

1.AIGC概述 AIGC,全称Artificial Intelligence Generated Content,即人工智能生成内容。这是一种新兴的人工智能技术,其核心思想是利用人工智能模型,根据给定的主题、关键词、格式、风格等条件,自动生成各种类型的文本…

文件没有权限问题:cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied

问题描述 执行 aem bootstrap start --plus 命令启动 Dreamview 提示错误: /bin/sh: 1: cannot create /opt/apollo/neo/data/log/monitor.log: Permission denied [ERROR] Failed to start Dreamview. Please check /opt/apollo/neo/data/log/dreamview.log or /op…

Chatgpt int **p 实际应用场景

#include <stdio.h> #include <stdlib.h> int main() { int rows 3, cols 4; int **p; // 为行指针数组分配内存 p (int **)malloc(rows * sizeof(int *)); // 为每一行分配内存 for (int i 0; i < rows; i) { p[i] (in…

文本相似度的三种算法

​为了实现基于嵌入向量相似度来查找输入文本与给定列表中最相似的元素&#xff0c;你可以使用预训练的文本嵌入模型&#xff08;例如&#xff0c;sentence-transformers&#xff09;&#xff0c;并计算输入文本与列表元素之间的余弦相似度。如果想避免依赖外部库或模型&#x…

掌握.gitignore与标签(Tag)的高效使用

前言 在软件开发过程中&#xff0c;版本控制是不可或缺的一环&#xff0c;而Git作为当前最流行的分布式版本控制系统&#xff0c;以其高效、灵活的特点被广泛应用于项目管理中。本文将深入探讨Git中的两个重要概念&#xff1a;.gitignore文件和标签&#xff08;Tag&#xff09…

AMS深入浅出

目标&#xff1a; 1. 一、AMS启动流程 ActivityManagerService是 安卓10 以后&#xff0c;将AMS拆分出ActivityTaskManagerService。 1.1 启动入口 AMS是由SystemServer进程启动&#xff0c;在启动过程 startBootStripService&#xff0c;会启动AMS和ATMS服务。 SystemSe…