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()
操作完毕,记得关闭数据库连接:

2. MySQL 数据库

MySQL 的操作和 SQLite 很相似,不过我们需要先安装 pymysql 库。
安装 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 让文件操作和数据库交互变得轻松愉快。
通过 open()、sqlite3 和 pymysql,我们可以高效地处理数据,提升开发的生产力。
开发人员只要掌握这些工具,就能在项目中得心应手地完成各种数据处理任务。
希望今天的内容对大家有帮助,欢迎大家在评论区分享你的经验和技巧哦!
目前,对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。

🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》。

资料包含了《IDEA视频教程》、《最全python面试题库》、《最全项目实战源码及视频》及《毕业设计系统源码》,总量高达650GB。全部免费领取!全面满足各个阶段程序员的学习需求。