Python--MySQL及其使用

1. MySQL 简介

MySQL 是一个开源的关系型数据库管理系统(RDBMS),广泛用于各种应用程序,支持多种操作系统。它使用 SQL 语言进行数据查询、管理和操作。

2. MySQL 的主要特点

  • 跨平台:支持多种操作系统,如 Linux、Windows、Mac OS 等。
  • 高性能:优化的查询处理和缓存机制,提供高并发处理能力。
  • 安全性:提供用户认证、访问控制和数据加密等安全机制。
  • 易用性:通过图形界面和命令行工具简化数据库管理。

3. Python 连接 MySQL

Python 通过 pymysql 库可以方便地与 MySQL 数据库进行交互。以下是一些基础操作的示例。

3.1 安装 pymysql

首先需要安装 pymysql 库:

pip install pymysql

3.2 连接数据库

使用 pymysql 连接 MySQL 数据库:

from pymysql import Connectionconn = Connection(host="localhost",   # 主机名(IP)port=3306,          # 端口user="root",        # 账户password="123456",   # 密码autocommit=True     # 设置自动提交
)

3.3 选择数据库

conn.select_db("py_sql")

3.4 执行 SQL 语句

cursor = conn.cursor()      # 获取到游标对象
cursor.execute("insert into student values(10001, '周杰轮', 31, '男')")

3.5 查询数据

cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()
for r in result:print(r)

3.6 关闭连接

conn.close()

4. 数据导入与导出

4.1 从文本文件导入数据

假设有一个文本文件 D:/2011年1月销售数据.txt,我们可以使用自定义的 TextFileReader 类读取数据,并将其导入到 MySQL 数据库中。

from file_define_mysql import TextFileReader
from data_define_mysql import Record
from pymysql import Connectiontext_file_reader = TextFileReader("D:/2011年1月销售数据.txt")
jan_data: list[Record] = text_file_reader.read_data()conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")for record in jan_data:sql = f"insert into orders(order_date, order_id, money, province) " \f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"cursor.execute(sql)conn.close()

4.2 从 JSON 文件导入数据

类似地,可以从 JSON 文件读取数据并导入到 MySQL 数据库中。

from file_define_mysql import JsonFileReader
from data_define_mysql import Record
from pymysql import Connectionjson_file_reader = JsonFileReader("D:/2011年2月销售数据JSON.txt")
feb_data: list[Record] = json_file_reader.read_data()conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")for record in feb_data:sql = f"insert into orders(order_date, order_id, money, province) " \f"values('{record.date}', '{record.order_id}', {record.money}, '{record.province}')"cursor.execute(sql)conn.close()

4.3 从 MySQL 导出数据到 JSON 文件

将 MySQL 中的数据导出到 JSON 文件。

from data_define_mysql import Record
from pymysql import Connectionf = open("d:/output.json", "w", encoding="UTF-8")
conn = Connection(host="localhost",port=3306,user="root",password="123456",autocommit=True
)
cursor = conn.cursor()
conn.select_db("py_sql")
cursor.execute("SELECT * FROM orders")
result = cursor.fetchall()for r in result:record = Record(r[0], r[1], r[2], r[3])f.write(record.to_json())f.write("\n")conn.close()
f.close()

5. 注意事项

  • 数据安全:在处理敏感数据时,确保使用加密连接和安全密码。
  • 错误处理:在实际应用中,应添加错误处理逻辑,确保程序的健壮性。
  • 性能优化:在处理大量数据时,考虑使用批处理和索引优化查询性能。

通过以上示例和说明,可以基本掌握 Python 与 MySQL 的交互操作,实现数据的导入、导出和管理。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文掌握Prometheus实现页面登录认证并集成grafana

一、接入方式 以保护Web站点的访问控制,如HTTP 服务器配置中实现安全的加密通信和身份验证,保护 Web 应用程序和用户数据的安全性。 1.1 加密密码 通过httpd-tools工具包来进行Web站点加密 yum install -y httpd-tools方式一:通过htpasswd生…

智慧物流园区整体架构方案(46页PPT)

PPT介绍 将深入探讨如何通过高度集成的信息技术和物联网设备,打造一个自动化、高效与可持续发展的现代物流体系。该方案从智能感知层开始,利用传感器、RFID技术、GPS等手段实时采集物流数据;接着是网络传输层,借助高速且稳定的通信…

姓名配对测试源码

源码简介 姓名配对测试源码,输入两人姓名即可测试缘分,可查看朋友到底喜欢谁的趣味源码。 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查…

日常学习--20240717

1、spring事务失效的几种情况? 自己new的对象(非spring定义的bean),或者同一个类的方法调用(this.调用,未使用动态代理),这两种方式都会绕过spring的aop对应的数据库不支持事务事务…

牛奶供应(三)

一个字贪&#xff0c;第一天&#xff0c;只能选择制作方式&#xff0c;后面的每一天&#xff0c;在<今天制作>与<前期存储>之间取更优解 例如样例&#xff1a;100 5&#xff0c;200 5&#xff0c;90 20&#xff0c;存储成本为10 第1天&#xff1a; 一定是制作&…

C++ map和set的使用

目录 0.前言 1.关联式容器 2.键值对 3.树形结构的关联式容器 3.1树形结构的特点 3.2树形结构在关联式容器中的应用 4.set 4.1概念与性质 4.2使用 5.multiset 5.1概念与性质 5.2使用 6.map 6.1概念与性质 6.2使用 7.multimap 7.1概念与性质 7.2使用 8.小结 &a…

Spring MVC 中 HttpMessageConverter 转换器

1. Spring MVC 中 HttpMessageConverter 转换器 文章目录 1. Spring MVC 中 HttpMessageConverter 转换器2. 补充&#xff1a;什么是 HTTP 消息3. 转换器3.1 转换器转换的是什么 4. Spring MVC中的 AJAX 请求5. ResponseBody 将服务器端的 return 返回值转化为“字符串(JSON格式…

大语言模型-基础及拓展应用

一、基础模型 1、Transformer 2、bert 3、gpt 二、大语言模型 三、句子向量 四、文档解析 1、通用解析 2、docx解析 3、 pdf解析 4、pptx解析 五、向量数据库

rtf是什么格式的文件?rtf格式和word的区别是什么?

RTF是什么格式的文件? RTF&#xff08;富文本格式&#xff0c;Rich Text Format&#xff09;和Word文档&#xff08;以.doc和.docx为扩展名的Microsoft Word文档&#xff09;是两种常用的文本文件格式。它们在文件结构、兼容性、功能和使用场景等方面存在一些显著差异。 比如…

Android 14新特性:选择性照片和视频访问授权

Android 14 引入了选择性照片和视频访问授权的新特性&#xff0c;这是一项旨在增强用户隐私和数据安全的重要更新。在之前的 Android 版本中&#xff0c;应用程序请求访问设备上的照片和视频时&#xff0c;通常会要求完全访问权限&#xff0c;这意味着应用可以访问用户图库中的…

arcgis怎么选取某个指定区域地方的数据,比如从全国乡镇数据选取长沙市乡镇数据

一共5个步骤&#xff0c;没一句废话&#xff0c;耐心看完。 1、如图&#xff0c;先将数据加载到arcgis里面&#xff0c;我们要选取里面长沙市的范围数据。 2、选取长沙市的语句 “市” like ‘长沙%’ 切记&#xff0c;切记&#xff0c;切记。所有符号要在 输入法英文状态…

微信小程序 vant-weapp的 SwipeCell 滑动单元格 van-swipe-cell 滑动单元格不显示 和 样式问题 滑动后删除样式不显示

在微信小程序开发过程中 遇到个坑 此处引用 swipeCell 组件 刚开始是组件不显示 然后又遇到样式不生效 首先排除问题 是否在.json文件中引入了组件 {"usingComponents": {"van-swipe-cell": "vant/weapp/swipe-cell/index","van-cell-gro…

电脑系统重装数据被格式化,那些文件还有办法恢复吗?

在日常使用电脑的过程中&#xff0c;系统重装或格式化操作是常见的维护手段&#xff0c;尤其是在遇到系统崩溃、病毒感染或需要升级系统时。然而&#xff0c;这一操作往往伴随着数据丢失的风险&#xff0c;尤其是当C盘&#xff08;系统盘&#xff09;和D盘&#xff08;或其他数…

linux|多线程(一)

主要介绍了为什么要有线程 和线程的调用 和简单的对线程进行封装。 背景知识 a.重谈地址空间 我们知道物理内存的最小单元大小是4kB 物理内存是4G那么这样的单元友1M个 操作系统先描述再组织struct page[1M] 对于32位数据字长的机器&#xff0c;页表有2^32条也就是4G条&#…

嵌入式linux相机 转换模块

convert_manager.c #include <config.h> #include <convert_manager.h> #include <string.h>static PT_VideoConvert g_ptVideoConvertHead NULL;/*********************************************************************** 函数名称&#xff1a; Register…

异常检测在机器学习中的重要性

异常检测在机器学习中的重要性 在机器学习领域&#xff0c;异常检测&#xff08;Anomaly Detection&#xff09;是一种识别数据集中异常或不寻常模式的任务。这些异常点可能代表错误、噪声、或更有趣的是&#xff0c;它们可能揭示了某些异常行为或新现象。异常检测在许多领域都…

LabVIEW Communications LTE Application Framework 读书笔记

目录 硬件要求一台设备2台USRPUSRP-2974 示例项目的组件文件夹结构DL Host.gcompeNodeB Host.gcompUE Host.gcompBuildsCommonUSRP RIOLTE 操作模式DLeNodeBUE 项目组件单机双机UDP readUDP writeMAC TXMAC RXDL TX PHYDL RX PHYUL TX PHYUL RX PHYSINR calculationRate adapta…

Vue + litegraph.js 实现蓝图功能

Vue3 litegraph.js 实现蓝图功能 litegraph.js [github](https://github.com/jagenjo/litegraph.js) [demo](https://tamats.com/projects/litegraph/editor/)vue - html <canvas id"mycanvas" width"1524" height"720" style"border…

PostgreSQL数据库从入门到精通系列之九:PostgreSQL数据库13版本和PostgreSQL数据库14版本功能特性

PostgreSQL数据库从入门到精通系列之九:PostgreSQL数据库13版本和PostgreSQL数据库14版本功能特性 一、PostgreSQL数据库版本13新功能和特性二、PostgreSQL13相比于PostgreSQL12功能改进三、PostgreSQL数据库14版本新功能和特性一、PostgreSQL数据库版本13新功能和特性 Postg…

R语言优雅的把数据基线表(表一)导出到word

基线表&#xff08;Baseline Table&#xff09;是医学研究中常用的一种数据表格&#xff0c;用于在研究开始时呈现参与者的初始特征和状态。这些特征通常包括人口统计学数据、健康状况和疾病史、临床指标、实验室检测、生活方式、社会经济等。 本人在既往文章《scitb包1.6版本发…