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

18cb4833b27837be12e7374f5dbcea38.jpeg

更多Python学习内容:ipengtao.com

文件操作和数据库交互是Python编程中常见的任务,无论是读取和写入文件,还是与数据库进行数据交互,都是开发中不可或缺的部分。本文将介绍如何在Python中进行文件操作以及如何与数据库进行交互,并提供详细的示例代码。

文件操作

1. 打开文件

在Python中,可以使用open()函数来打开文件。需要指定文件的路径和打开模式,例如读取('r')、写入('w')、追加('a')等。

# 打开文件以供读取
file = open('example.txt', 'r')# 打开文件以供写入
file = open('example.txt', 'w')

2. 读取文件

一旦文件被打开,可以使用read()方法来读取文件内容。

file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

3. 写入文件

要将数据写入文件,可以使用write()方法。

file = open('example.txt', 'w')
file.write('Hello, World!')
file.close()

4. 自动关闭文件

为了确保文件在使用后被正确关闭,可以使用with语句来自动关闭文件。

with open('example.txt', 'r') as file:content = file.read()print(content)
# 文件在离开`with`块后会自动关闭

5. 逐行读取文件

还可以使用readline()方法逐行读取文件。

with open('example.txt', 'r') as file:for line in file:print(line)

6. 文件操作的异常处理

在进行文件操作时,建议使用异常处理来处理可能出现的错误。

try:with open('example.txt', 'r') as file:content = file.read()print(content)
except FileNotFoundError:print("文件不存在")
except Exception as e:print("发生错误:", e)

与数据库的交互

1. 连接数据库

在Python中,可以使用各种数据库库来连接和操作数据库。常见的数据库库包括sqlite3(SQLite数据库)、mysql-connector-python(MySQL数据库)、psycopg2(PostgreSQL数据库)等。

import sqlite3# 连接到SQLite数据库
conn = sqlite3.connect('example.db')

2. 创建表格

要在数据库中创建表格,可以使用SQL语句执行。

# 创建表格
cursor = conn.cursor()
cursor.execute('''CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, email TEXT)''')
conn.commit()

3. 插入数据

要插入数据,可以使用SQL语句或预处理语句。

# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Alice', 'alice@example.com'))
conn.commit()

4. 查询数据

要查询数据,可以执行SQL查询并获取结果。

# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:print(row)

5. 更新和删除数据

要更新和删除数据,可以使用SQL语句执行。

# 更新数据
cursor.execute("UPDATE users SET email = ? WHERE name = ?", ('new_email@example.com', 'Alice'))
conn.commit()# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('Alice',))
conn.commit()

6. 关闭数据库连接

完成数据库操作后,不要忘记关闭数据库连接。

# 关闭数据库连接
conn.close()

数据库交互的高级用法

1. 使用ORM框架

ORM(对象关系映射)框架可以将数据库表格映射为Python对象,从而更方便地进行数据库操作。常见的Python ORM框架包括SQLAlchemy和Django ORM。

以下是一个使用SQLAlchemy的示例:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base# 创建数据库引擎
engine = create_engine('sqlite:///example.db')# 创建数据表的基类
Base = declarative_base()# 定义数据表类
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)email = Column(String)# 创建数据表
Base.metadata.create_all(engine)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()# 插入数据
new_user = User(name='Bob', email='bob@example.com')
session.add(new_user)
session.commit()# 查询数据
users = session.query(User).all()
for user in users:print(user.name, user.email)

2. 使用事务

事务是数据库操作的一种机制,可以确保一系列操作要么全部成功,要么全部失败。可以使用事务来维护数据的一致性。

# 开始事务
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
conn.execute("BEGIN")try:# 执行一系列操作cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('Charlie', 'charlie@example.com'))cursor.execute("UPDATE users SET email = ? WHERE name = ?", ('new_email@example.com', 'Alice'))conn.commit()  # 提交事务
except Exception as e:conn.rollback()  # 回滚事务print("发生错误:", e)
finally:conn.close()

3. 批量插入数据

如果要插入大量数据,最好使用批量插入以提高性能。

# 批量插入数据
data = [('Dave', 'dave@example.com'), ('Eve', 'eve@example.com'), ('Frank', 'frank@example.com')]
cursor.executemany("INSERT INTO users (name, email) VALUES (?, ?)", data)
conn.commit()

4. 防止SQL注入

请始终谨慎处理用户输入的数据,以防止SQL注入攻击。使用参数化查询或预处理语句可以提高安全性。

# 参数化查询
name = 'Alice'
email = 'alice@example.com'
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", (name, email))# 预处理语句
query = "INSERT INTO users (name, email) VALUES (?, ?)"
cursor.execute(query, (name, email))

总结

本文介绍了Python中的文件操作和与数据库的交互方法,包括打开、读取、写入文件以及连接、创建表格、插入、查询、更新和删除数据库数据等。文件操作和数据库交互是Python编程中的基本技能,对于数据处理和应用开发都非常重要。希望这些示例代码能帮助大家更好地理解和应用文件操作和数据库交互的技巧。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

cd70886dd691fbd8a096390506c858e2.png

点击“阅读原文”,获取更多学习内容

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

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

相关文章

Git(3):Git环境常用命令

1 获取本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 (1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库 (2)进入这个目录中,点击右键打开…

提高数控六面钻打孔精度的技巧

六面钻是一种高效的自动化打孔设备,广泛应用于板式家具、橱柜、木制品等行业的生产制造。其打孔精度高,是许多企业提高生产质量和效率的关键之一。本文将围绕“六面钻打孔精度高”这一主题,从技巧、应用实例等方面展开讨论。 提高六面钻打孔精…

Navicat 技术干货 | 聚合查询的介绍

基础 SQL 查询可以检索、插入、更新和删除记录,而聚合查询可通过提供求和、平均值或最大/最小值等的大型结果集,将数据库交互提升到一个新的水平。本文中,我们将探索聚合 SQL 查询的基础知识,并研究如何有效的利用他们来分析和汇总…

Spring相关重点API

一:ApplicationContext的继承体系 ApplicationContext:接口类型,代表应用上下文,可以通过其实例获得Spring容器中的Bean对象 二:ApplicationContext的实现类 1:ClassPathXmlApplicationContext 它是从类的根路径下…

[C#]C# OpenVINO部署yolov8-pose姿态估计模型

【源码地址】 github地址:https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-Pose算法是一种基于深度神经网络的目标检测算法,用于对人体姿势进行准确检测。该算法在Yolov8的基础上引入了姿势估计模块,通过联合检测和姿势…

扎心!圣诞礼物含“毒”量极高,当心惊喜变惊吓!

圣诞快乐? 近日,亚信安全截获多起以“圣诞礼物”为钓鱼邮件的间谍木马病毒,名为RedLine。 RedLine通常是通过钓鱼邮件或挂马网站进行传播。钓鱼邮件更多的是利用社会工程学,“蹭热点”、节日祝福和节日福利是攻击者经常使用的社工…

FreeRTOS——优先级翻转

1.优先级翻转概念 优先级翻转:高优先级的任务反而慢执行,低优先级的任务反而优先执行 注意:在实时操作系统中不允许出现,在二值信号量中经常出现 2.优先级翻转实战 2.1freertos_demo.c #include "freertos_demo.h" #i…

快速学习SpringBoot

SpringBoot springboot传统方式构建spring应用程序使用springboot子项目构建起步依赖自动配置其它特性 SpringBoot项目部署Spring项目部署属性配置方式命令行参数方式配置环境变量方式外部配置文件方式 多环境开发-Pofiles多环境开发分组 springboot 传统方式构建spring应用程…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群: 二进制搭建适合大集群,50台以上的主机, 但是kubeadm更适合中小企业的业务集群 环境: Master:20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1:20.…

案例072:基于微信小程序的会议发布与预约系统的设计与开发

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

Unity中URP下的线性雾

文章目录 前言一、线性雾 雾效因子二、MixFog1、ComputeFogIntensity 雾效强度计算2、雾效颜色混合 lerp(fogColor, fragColor, fogIntensity); 前言 在之前的文章中,我们实现了URP下的雾效支持。 Unity中URP下的添加雾效支持 在上一篇文章中,我们解析了 URP 下统…

OSPF被动接口配置-新版(14)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.4 配置R4的IP 1.5 配置R5的IP 1.6 配置PC-1的IP地址 1.7 配置PC-2的IP地址 1.8 配置PC-3的IP地址 1.9 配置PC-4的IP地址 1.10 检测R1与PC3连通性 1.11 检测R2与PC4连通性 1.12 检测R4与PC1连…