Python数据库操纵:利用Python连接和操纵数据库
https://i-blog.csdnimg.cn/direct/b255f9df28da4f1bb4f92a7010acda4c.gif数据库入门小分队:Python带你探索数据海洋
想象一下,你正站在一片广阔无垠的海洋前,这片海洋不是水构成的,而是由无数的数据组成。这些数据可能是你的客户信息、销售记载或是任何对你的业务至关重要的信息。现在,你必要一种方法来驾驭这片海洋,让数据为你所用。这就是Python作为一艘强大而灵活的小船的作用——它可以帮助你轻松地在数据海洋中飞行。
在这次路程中,我们将学习怎样利用Python与各种数据库进行交互,从简单的查询到复杂的事务处理,一步步揭开数据库世界的秘密面纱。无论你是编程新手还是有一定履历的开发者,这里都将是你踏上成为数据库专家之路的第一步。
搭建桥梁:利用Python连接数据库的几种常见方式
既然我们已经准备好要开始这次探险了,接下来就必要搭建一座通往数据海洋的桥梁。对于Python来说,有多种方式可以实现这一点,此中最常用的是通过sqlite3库连接SQLite数据库,以及利用psycopg2或mysql-connector-python如许的库来连接更大型的关系型数据库如PostgreSQL和MySQL。
示例代码:利用sqlite3创建并连接一个SQLite数据库
起首,让我们看看怎样利用Python自带的sqlite3模块来创建一个新的SQLite数据库,并插入一些根本的数据。
import sqlite3
# 连接到SQLite数据库(如果文件不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 创建一个Cursor对象
cursor = conn.cursor()
# 创建一张新表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
# 插入几条记录
users_data = [
(1, 'Alice', 30),
(2, 'Bob', 25),
(3, 'Charlie', 35)
]
cursor.executemany('INSERT INTO users (id, name, age) VALUES (?, ?, ?)', users_data)
# 提交事务
conn.commit()
# 查询所有用户
cursor.execute('SELECT * FROM users')
print(cursor.fetchall())
# 关闭连接
conn.close()
这段代码展示了怎样利用sqlite3模块来完成根本的CRUD(创建、读取、更新、删除)操纵。通过这种方式,你可以快速上手并开始管理本身的数据集。
游刃有余:把握根本SQL语句与Python的完美联合
一旦你能够顺利地连接到数据库,下一步就是学会怎样高效地利用SQL语句。SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言。通过将SQL与Python联合起来,我们可以编写出既简便又强大的程序来执行复杂的数据库操纵。
示例代码:执行复杂的SQL查询
假设我们现在想要找出年龄大于30岁的全部用户,而且按照年龄降序排列。
import sqlite3
def query_users():
# 重新打开之前创建的数据库连接
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 执行复杂查询
cursor.execute('''
SELECT * FROM users
WHERE age > 30
ORDER BY age DESC
''')
# 获取查询结果
results = cursor.fetchall()
# 打印结果
for row in results:
print(row)
# 不要忘记关闭连接
conn.close()
query_users()
这个例子演示了怎样构造一个带有条件过滤和排序的SQL查询,并通过Python脚本输出结果。这种能力对于数据分析和报告生成等场景非常有用。
实战演练:通过Python实现数据增删改查操纵
理论知识固然重要,但实战才是检验真理的唯一标准。接下来,我们将通过一系列实际操纵来巩固所学内容。我们将模拟一个小型图书管理系统,包括添加新书、查找册本、更新册本信息以及删除不再必要的册本等功能。
示例代码:构建一个简单的图书管理系统
起首界说我们的数据模型,然后实现根本的CRUD功能。
import sqlite3
def init_db():
conn = sqlite3.connect('books.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
author TEXT,
year INTEGER
)
''')
conn.commit()
conn.close()
def add_book(title, author, year):
conn = sqlite3.connect('books.db')
cursor = conn.cursor()
cursor.execute('INSERT INTO books (title, author, year) VALUES (?, ?, ?)', (title, author, year))
conn.commit()
conn.close()
def get_books():
conn = sqlite3.connect('books.db')
cursor = conn.cursor()
cursor.execute('SELECT * FROM books')
books = cursor.fetchall()
conn.close()
return books
def update_book(book_id, title=None, author=None, year=None):
updates = []
params = []
if title is not None:
updates.append("title=?")
params.append(title)
if author is not None:
updates.append("author=?")
params.append(author)
if year is not None:
updates.append("year=?")
params.append(year)
params.append(book_id)
update_query = f"UPDATE books SET {', '.join(updates)} WHERE id=?"
conn = sqlite3.connect('books.db')
cursor = conn.cursor()
cursor.execute(update_query, params)
conn.commit()
conn.close()
def delete_book(book_id):
conn = sqlite3.connect('books.db')
cursor = conn.cursor()
cursor.execute('DELETE FROM books WHERE id=?', (book_id,))
conn.commit()
conn.close()
# 初始化数据库
init_db()
# 添加几本书
add_book("Python Programming", "John Doe", 2020)
add_book("Advanced SQL", "Jane Smith", 2019)
# 显示所有书籍
print("All Books:")
for book in get_books():
print(book)
# 更新一本书的信息
update_book(1, title="Learning Python", year=2021)
# 再次显示所有书籍以确认更新
print("\nUpdated Books List:")
for book in get_books():
print(book)
# 删除一本书
delete_book(2)
# 显示最终的书籍列表
print("\nFinal Books List After Deletion:")
for book in get_books():
print(book)
以上代码展示了一个完整的图书管理系统的根本框架,涵盖了数据库初始化、增加、读取、更新和删除操纵。这不仅是一个很好的训练项目,也为你将来开发更复杂的应用打下了坚实的底子。
进阶秘笈:利用ORM让Python与数据库交互更加优雅
随着项目标复杂度渐渐增加,直接编写SQL语句可能会变得越来越繁琐。这时,就轮到对象关系映射(Object-Relational Mapping, ORM)登场了。ORM提供了一种更高条理的抽象,使得我们可以像操纵普通Python对象一样来操纵数据库中的记载,从而极大地进步了开发服从。
利用SQLAlchemy进行ORM操纵
SQLAlchemy是最受欢迎的Python ORM之一。下面是一个简化的例子,展示怎样利用SQLAlchemy来简化前面提到的图书管理系统。
安装SQLAlchemy
pip install sqlalchemy
示例代码:基于SQLAlchemy的图书管理系统
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建基类
Base = declarative_base()
# 定义Book模型
class Book(Base):
__tablename__ = 'books'
id = Column(Integer, primary_key=True)
title = Column(String)
author = Column(String)
year = Column(Integer)
# 初始化数据库连接
engine = create_engine('sqlite:///books_orm.db')
Base.metadata.create_all(engine)
# 创建Session
Session = sessionmaker(bind=engine)
session = Session()
# 添加新的书籍
new_book = Book(title="Python Mastery", author="Alex Johnson", year=2022)
session.add(new_book)
session.commit()
# 查询所有书籍
all_books = session.query(Book).all()
for book in all_books:
print(f"ID: {book.id}, Title: {book.title}, Author: {book.author}, Year: {book.year}")
# 更新书籍信息
book_to_update = session.query(Book).filter_by(id=1).first()
if book_to_update:
book_to_update.title = "Mastering Python"
session.commit()
# 删除一本书
book_to_delete = session.query(Book).filter_by(id=1).first()
if book_to_delete:
session.delete(book_to_delete)
session.commit()
# 最终检查
final_books = session.query(Book).all()
for book in final_books:
print(f"ID: {book.id}, Title: {book.title}, Author: {book.author}, Year: {book.year}")
# 关闭Session
session.close()
在这个例子中,我们界说了一个Book类来代表数据库中的表,并利用SQLAlchemy提供的API来进行CRUD操纵。这种方式不仅使代码更加清楚易懂,还减少了出错的可能性,非常适合大型项目。
通过这篇文章的学习,希望你能对怎样利用Python进行数据库操纵有一个全面的明白。无论是简单的小项目还是企业级应用,Python及其丰富的库都为你提供了强有力的支持。现在就动手实践起来吧,让你的数据管理工作变得更加高效和风趣!
嘿!欢迎光临我的小小博客天地——这里就是咱们畅聊的大本营!能在这儿遇见你真是太棒了!我希望你能感受到这里轻松愉快的氛围,就像老朋友围炉夜话一样温馨。
这里不仅有好玩的内容和知识等着你,还特别欢迎你畅所欲言,分享你的想法和见解。你可以把这里当作本身的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。
让我们一起探索新奇的事物,分享生存的点滴,让这个小角落成为我们共同的精力故里。快来一起加入这场精彩的对话吧!无论你是新手上路还是资深玩家,这里都有你的位置。记得在评论区留下你的足迹,让我们彼此之间的交换更加丰富多元。等待与你共同创造更多优美的回想!
欢迎来鞭笞我:master_chenchen
【内容介绍】
[*]【算法提拔】:算法头脑提拔,大厂内卷,人生无常,大厂包小厂,呜呜呜。卷到末了各人都是地中海。
[*]【sql数据库】:当你在海量数据中迷失方向时,SQL就像是一位超级英雄,瞬间就能帮你定位到宝藏的位置。快来和这位神通广大的小同伴交个朋友吧!
【微信小程序知识点】:小程序已经渗透我们生存的方方面面,学习了解微信小程序开发是非常有必要的,这里将介绍微信小程序的各种知识点与踩坑记载。- 【python知识】:它简单易学,却又功能强大,就像把戏师手中的魔杖,一挥就能变出各种神奇的东西。Python,不仅是代码的艺术,更是程序员的快乐源泉!
【AI技能探讨】:学习AI、了解AI、然后被AI替换、末了被AI使唤(手动狗头)
好啦,小同伴们,今天的探索之旅就到这里啦!感谢你们一路相伴,一同走过这段充满挑衅和乐趣的技能路程。如果你有什么想法或建议,记得在评论区留言哦!要知道,每一次交换都是一次心灵的碰撞,大概你的一个小小火花就能点燃我下一个大大的创意呢!
末了,别忘了给这篇文章点个赞,分享给你的朋友们,让更多的人加入到我们的技能各人庭中来。咱们下次再见时,希望能有更多的故事和履历与各人分享。记住,无论何时何地,只要心中有热爱,脚下就有气力!
对了,各位看官,小生才情有限,笔墨之间难免会有不尽如人意之处,还望多多包涵,不吝见教。咱们在这个小小的网络世界里相遇,真是缘分一场!我真心希望能和各人一起探索、学习和成长。固然这里的文字可能不够渊博,但也希望能给各位带来些许帮助。如果发现什么题目大概有啥建议,请务必告诉我,让我有机会做得更好!感激不尽,咱们一起加油哦!
那么,今天的分享就到这里了,希望你们喜好。接下来的日子里,记得给本身一个大大的拥抱,因为你真的很棒!咱们下次见,愿你每天都有美意情,技能之路越走越宽广!
https://i-blog.csdnimg.cn/direct/c42dcfdbeb374071ac7f154ccd3f3c20.jpeg
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]