Python中 文件操作及与数据库的交互

news2024/10/17 5:44:36

在数据驱动的时代,Python不仅是一门强大的编程语言,更是与文件系统和数据库交互的重要工具。无论是读取配置文件、处理数据集,还是与数据库进行交互,Python都能轻松胜任。那么,如何高效地进行文件操作,并实现与数据库的无缝连接呢?

在Python的文件操作中,有哪些常见的方法和技巧?与数据库的交互又该如何实现?本文将为你一一解答。

对于任何一个开发人员来说,不论你是刚入行的小白,还是已经在代码的泥潭中摸爬滚打多年的老手,文件操作和数据库几乎是每天都会接触到的内容。

Python 作为一个万金油的语言,提供了丰富的文件操作功能和数据库交互库,让开发变得更加便捷。

今天我就带大家一起深入探讨一下 Python 文件操作的各种玩法,以及如何与数据库(SQLite 和 MySQL)高效交互。话不多说,我们直奔主题吧。

一、文件操作

1. 打开文件

文件操作的第一步,自然是得打开文件。在 Python 中,open() 函数是打开文件的核心工具。它的基本语法是:

file = open('example.txt', 'r')  # 以读模式打开文件

打开文件时,最常用的几种模式是:

  • 读模式 (r):只读文件,文件不存在会报错。

  • 写模式 (w):写入文件,如果文件存在会清空内容。

  • 追加模式 (a):在文件末尾追加内容,不会覆盖已有内容。

示例代码:读取文件并关闭
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()  # 记得用完之后关门关窗

2. 使用 with 上下文管理器

手动关闭文件有点麻烦,而且要是忘记了还容易出问题。好在 Python 有一个神奇的上下文管理器 with,帮我们自动管理文件的打开和关闭。​​​​​​​

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
# 这下不用担心忘关文件了,`with` 会自动处理

3. 写入文件

文件的写入就是往纸上写字,方法很简单,用 write() 就行。当然,如果要追加内容,那就得用追加模式了 (a)。​​​​​​

with open('example.txt', 'w') as file:
    file.write('Hello, World!')

with open('example.txt', 'a') as file:
    file.write('\nAppending this line.')

4. 读取文件

读取文件可以使用 read()、readline() 或 readlines()。它们的区别类似于一次性喝掉一瓶水、一口一口喝水、和把水分成几次喝完。​​​​​​​

with open('example.txt', 'r') as file:
    # 读取整个文件
    content = file.read()
    print(content)

    # 逐行读取
    file.seek(0)  # 移动到文件开头
    line = file.readline()
    while line:
        print(line.strip())  # 去掉行末的换行符
        line = file.readline()

    # 读取所有行,返回一个列表
    file.seek(0)
    lines = file.readlines()
    print(lines)

5. 二进制文件操作

当你需要操作图片、视频等非文本文件时,就得用 rb(读二进制)或 wb(写二进制)模式。​​​​​​​

with open('image.jpg', 'rb') as file:
    binary_data = file.read()

with open('copy.jpg', 'wb') as file:
    file.write(binary_data)

二、与数据库的交互

接下来,咱们聊聊如何和数据库打交道。常见的数据库有 SQLite 和 MySQL。Python 里有相应的模块来和它们互动,让我们先从 SQLite 开始说起。

1. SQLite 数据库

SQLite 是一个轻量级的数据库,非常适合做本地开发和小型项目。

连接数据库

首先要用 sqlite3 模块来连接数据库:​​​​​​​

import sqlite3

conn = sqlite3.connect('example.db')  # 如果数据库不存在会自动创建
cursor = conn.cursor()

示例代码:创建表​​​​​​​
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT,
        age INTEGER
    )
''')
conn.commit()  # 提交事务

插入数据
cursor.execute('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', ('Alice', 30))
conn.commit()
​​​​​​​
查询数据​​​​​​​
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

更新和删除数据​​​​​​​
cursor.execute('UPDATE users SET age = ? WHERE name = ?', (31, 'Alice'))
conn.commit()

cursor.execute('DELETE FROM users WHERE name = ?', ('Alice',))
conn.commit()

操作完毕,记得关闭数据库连接:

conn.close()
2. MySQL 数据库

MySQL 的操作和 SQLite 很相似,不过我们需要先安装 pymysql 库。

安装 pymysql 库
pip install pymysql
连接 MySQL 数据库
import pymysql

conn = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    database='test_db'
)
cursor = conn.cursor()

示例代码:创建表和插入数据​​​​​​​
cursor.execute('''
    CREATE TABLE IF NOT EXISTS employees (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100),
        salary FLOAT
    )
''')
conn.commit()

cursor.execute('''
    INSERT INTO employees (name, salary) VALUES (%s, %s)
''', ('Bob', 70000))
conn.commit()
查询数据​​​​​​​
cursor.execute('SELECT * FROM employees')
rows = cursor.fetchall()
for row in rows:
    print(row)

三、文件与数据库的交互

有时候,我们需要从文件中导入数据到数据库,或者从数据库导出数据到文件。

1. 文件数据导入数据库

假设我们有一个 CSV 文件,需要把它的数据导入到数据库:​​​​​​​

import csv

with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        cursor.execute('INSERT INTO users (name, age) VALUES (%s, %s)', row)
    conn.commit()

2. 数据库数据导出为文件

把数据库的数据导出为 CSV 文件也很简单:​​​​​​​

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    cursor.execute('SELECT * FROM users')
    writer.writerows(cursor.fetchall())

总结

随着大数据和云计算的快速发展,数据的处理和存储变得尤为重要。Python凭借其简单易用的特性,成为数据科学和数据分析领域的热门语言。越来越多的开发者和数据分析师选择使用Python进行文件操作和数据库交互,以提升工作效率。

Python 让文件操作和数据库交互变得轻松愉快。

通过 open()、sqlite3 和 pymysql,我们可以高效地处理数据,提升开发的生产力。

开发人员只要掌握这些工具,就能在项目中得心应手地完成各种数据处理任务。

在Python的世界里,文件操作和数据库交互是基本而重要的技能。通过掌握这些技术,你不仅能更高效地处理数据,还能为后续的数据分析与处理打下坚实的基础。

希望今天的内容对大家有帮助,欢迎大家在评论区分享你的经验和技巧哦!

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

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

相关文章

uniapp 小程序0到1教程

先说明一下,uni-app的文档很乱 一、注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序”…

基本计算器 II

文章目录 题目解析解题小结 题目解析 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符…

lazyLoad

//1.通过React的lazy函数配合import()函数动态加载路由组件 > 路由组件代码会被分开打包 const Login lazy(()>import(/pages/Login)) //2.通过<Suspense>指定在加载得到路由打包文件前显示一个自定义loading界面 <Suspense fallback{<h1&…

Arduino配置ESP32环境

Arduino配置ESP32环境 引言一、IDE下载教程操作取巧方法 二、社区安装包三、官方手动安装 引言 最近入手了一款ESP32-C3的开发板&#xff0c;想继续沿用现有Arduino IDE&#xff0c;网上看了很多方法&#xff0c;大致分了三类&#xff1a;IDE下载、社区安装包、github手动配置…

法规标准-懂车帝智能化实测标准(2024版)

场景&#xff1a;AEB追尾静态假车 1.场地布置&#xff1a; ——测试选取封闭场地&#xff0c;试验路面应为水平、干燥&#xff0c;具有良好附着能力的混凝土沥青路面&#xff0c;附着系数在0.8以上 ——试验过程中&#xff0c;在试验道路两边3m以内或者静止目标车前方30m内不能…

简单掌握 Android Studio 模拟器

下载 Android Studio安装adb、配置 adb创建一个新的Activity项目创建模拟器 参考&#xff1a;mac系统下android studio创建手机模拟器adb命令使用&#xff0c;可在模拟器上安装app 打开终端 adb devices // 查询设备 adb install xx/xx/xx // 安装apk&#xff08;apk路径拖进…

Learning to Adapt to Light

Abstract 光适应或亮度校正是提高图像对比度和视觉吸引力的关键步骤。 有多种与光相关的任务&#xff08;例如&#xff0c;低光增强和曝光校正&#xff09;&#xff0c;之前的研究主要单独研究这些任务。 然而&#xff0c;考虑这些与光相关的任务是否可以通过统一的模型来执行…

扫雷(C 语言)

目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘&#xff0c;然后输入坐标进行判断&#xff0c;若是雷&#xff0c;则游戏结束&#xff0c;否则…

南京邮电大学电工电子A实验九译码器及其应用

文章目录 1 实验报告预览2 Word版本报告下载 1 实验报告预览 2 Word版本报告下载 点我

git push错误failed to push some refs to解决方法

主流解决方法网上全是&#xff0c;例如解决目标仓库和本地仓库的版本冲突&#xff1b;关闭”受保护的仓库“权限。 本文讲述一种 网上几乎没有文章会讲解的一种可能的解决方式&#xff1a; 问题描述&#xff1a; 解决方式&#xff1a; 取消勾选即可

【Cadence27】HDL拷贝工程➕Allegro导出DXF和3D文件STP

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办&#xff1f; 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

python之socket网络编程

华子目录 引言什么是socketsocket套接字类型TCP和UDP socket服务端核心组件1.创建socket对象2.绑定地址和端口3.监听连接4.接受连接5.接受client端消息client_sock.revc(1024)6.发送响应给client端6.1client_sock.send()6.2client_sock.sendall() 7.关闭client端连接8.关闭serv…

【初阶数据结构】归并排序 - 分而治之的排序魔法

文章目录 前言1. 什么是归并排序&#xff1f;1.1 归并排序的步骤 2. 归并排序的代码实现2.1 归并排序代码的关键部分讲解2.1.1 利用递归2.1.2 将拆解的数组的元素放到一个临时空间中进行重新排序2.1.3 将在临时空间中排好的数组复制到目标数组中 3. 归并排序的非递归写法 前言 …

未来汽车究竟该是什么样子?

24年10月14日&#xff0c;在中国&#xff08;深圳&#xff09;机器视觉展暨机器视觉技术及工业应用研讨会上&#xff0c;同行者分享了未来智能座舱应该长什么样子。 受此启发&#xff0c;个人觉得当前大多数新能源车都极力想做出电动感&#xff0c;但是布局传统没跳出来&#…

DAY52WEB 攻防-XSS 跨站反射型存储型DOM 型标签闭合输入输出JS 代码解析

#知识点&#xff1a; 1、XSS跨站-输入输出-原理&分类&闭合 2、XSS跨站-分类测试-反射&存储&DOM 演示案例&#xff1a; ➢XSS跨站-输入输出-原理&分类&闭合 ➢XSS跨站-分类测试-反射&存储&DOM #XSS跨站-输入输出-原理&分类&闭合 漏…

安防监控摄像头图传模组,1公里WiFi无线传输方案,监控新科技

在数字化浪潮汹涌的今天&#xff0c;安防监控领域也迎来了技术革新的春风。今天&#xff0c;我们就来聊聊这一领域的产品——摄像头图传模组&#xff0c;以及它如何借助飞睿智能1公里WiFi无线传输技术&#xff0c;为安防监控带来未有的便利与高效。 一、安防监控的新篇章 随着…

基于Java+Springboot+Vue开发的酒店客房预订管理系统

项目简介 该项目是基于JavaSpringbootVue开发的酒店客房预订管理系统&#xff08;前后端分离&#xff09;&#xff0c;这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能&#xff0c;同时锻炼他们的项目设计与开发能力。通过学习基于Java…

【AI学习】Mamba学习(七):HiPPO通用框架介绍

HiPPO这篇论文《HiPPO: Recurrent Memory with Optimal Polynomial Projections》&#xff0c;提出了一个通用框架。 我们再重新看一下论文的摘要&#xff1a; 从连续数据中学习的一个核心问题是&#xff0c;随着更多数据的处理&#xff0c;以增量方式表示累积历史。我们介绍了…

【记录】Windows|Windows 修改字体大全(Windows 桌面、VSCode、浏览器)

【记录】Windows&#xff5c;Windows 修改字体大全&#xff08;Windows 桌面、VSCode、浏览器&#xff09; 前言 最近从学长那里发现了一款非常美观的衡水体字体——Maple Mono SC NF。您可以通过以下链接下载该字体&#xff1a;https://github.com/subframe7536/maple-font/…

【C语言刷力扣】1832.判断句子是否为全字母句

题目&#xff1a; 法一 bool checkIfPangram(char* sentence) {int str[256];memset(str, 0, sizeof(int));for (int i 0; i < strlen(sentence); i) {str[ sentence[i] ];}for (int j a; j < z; j) {if (!str[j]) return false;}return true; } 法二 动态分配 typ…