Python数据库操纵:利用Python连接和操纵数据库

打印 上一主题 下一主题

主题 843|帖子 843|积分 2531



  
数据库入门小分队:Python带你探索数据海洋

想象一下,你正站在一片广阔无垠的海洋前,这片海洋不是水构成的,而是由无数的数据组成。这些数据可能是你的客户信息、销售记载或是任何对你的业务至关重要的信息。现在,你必要一种方法来驾驭这片海洋,让数据为你所用。这就是Python作为一艘强大而灵活的小船的作用——它可以帮助你轻松地在数据海洋中飞行。
在这次路程中,我们将学习怎样利用Python与各种数据库进行交互,从简单的查询到复杂的事务处理,一步步揭开数据库世界的秘密面纱。无论你是编程新手还是有一定履历的开发者,这里都将是你踏上成为数据库专家之路的第一步。
搭建桥梁:利用Python连接数据库的几种常见方式

既然我们已经准备好要开始这次探险了,接下来就必要搭建一座通往数据海洋的桥梁。对于Python来说,有多种方式可以实现这一点,此中最常用的是通过sqlite3库连接SQLite数据库,以及利用psycopg2或mysql-connector-python如许的库来连接更大型的关系型数据库如PostgreSQL和MySQL。
示例代码:利用sqlite3创建并连接一个SQLite数据库

起首,让我们看看怎样利用Python自带的sqlite3模块来创建一个新的SQLite数据库,并插入一些根本的数据。
  1. import sqlite3
  2. # 连接到SQLite数据库(如果文件不存在,则会自动创建)
  3. conn = sqlite3.connect('example.db')
  4. # 创建一个Cursor对象
  5. cursor = conn.cursor()
  6. # 创建一张新表
  7. cursor.execute('''
  8. CREATE TABLE IF NOT EXISTS users (
  9.     id INTEGER PRIMARY KEY,
  10.     name TEXT NOT NULL,
  11.     age INTEGER
  12. )
  13. ''')
  14. # 插入几条记录
  15. users_data = [
  16.     (1, 'Alice', 30),
  17.     (2, 'Bob', 25),
  18.     (3, 'Charlie', 35)
  19. ]
  20. cursor.executemany('INSERT INTO users (id, name, age) VALUES (?, ?, ?)', users_data)
  21. # 提交事务
  22. conn.commit()
  23. # 查询所有用户
  24. cursor.execute('SELECT * FROM users')
  25. print(cursor.fetchall())
  26. # 关闭连接
  27. conn.close()
复制代码
这段代码展示了怎样利用sqlite3模块来完成根本的CRUD(创建、读取、更新、删除)操纵。通过这种方式,你可以快速上手并开始管理本身的数据集。
游刃有余:把握根本SQL语句与Python的完美联合

一旦你能够顺利地连接到数据库,下一步就是学会怎样高效地利用SQL语句。SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言。通过将SQL与Python联合起来,我们可以编写出既简便又强大的程序来执行复杂的数据库操纵。
示例代码:执行复杂的SQL查询

假设我们现在想要找出年龄大于30岁的全部用户,而且按照年龄降序排列。
  1. import sqlite3
  2. def query_users():
  3.     # 重新打开之前创建的数据库连接
  4.     conn = sqlite3.connect('example.db')
  5.     cursor = conn.cursor()
  6.     # 执行复杂查询
  7.     cursor.execute('''
  8.     SELECT * FROM users
  9.     WHERE age > 30
  10.     ORDER BY age DESC
  11.     ''')
  12.     # 获取查询结果
  13.     results = cursor.fetchall()
  14.    
  15.     # 打印结果
  16.     for row in results:
  17.         print(row)
  18.     # 不要忘记关闭连接
  19.     conn.close()
  20. query_users()
复制代码
这个例子演示了怎样构造一个带有条件过滤和排序的SQL查询,并通过Python脚本输出结果。这种能力对于数据分析和报告生成等场景非常有用。
实战演练:通过Python实现数据增删改查操纵

理论知识固然重要,但实战才是检验真理的唯一标准。接下来,我们将通过一系列实际操纵来巩固所学内容。我们将模拟一个小型图书管理系统,包括添加新书、查找册本、更新册本信息以及删除不再必要的册本等功能。
示例代码:构建一个简单的图书管理系统

起首界说我们的数据模型,然后实现根本的CRUD功能。
  1. import sqlite3
  2. def init_db():
  3.     conn = sqlite3.connect('books.db')
  4.     cursor = conn.cursor()
  5.     cursor.execute('''
  6.     CREATE TABLE IF NOT EXISTS books (
  7.         id INTEGER PRIMARY KEY,
  8.         title TEXT NOT NULL,
  9.         author TEXT,
  10.         year INTEGER
  11.     )
  12.     ''')
  13.     conn.commit()
  14.     conn.close()
  15. def add_book(title, author, year):
  16.     conn = sqlite3.connect('books.db')
  17.     cursor = conn.cursor()
  18.     cursor.execute('INSERT INTO books (title, author, year) VALUES (?, ?, ?)', (title, author, year))
  19.     conn.commit()
  20.     conn.close()
  21. def get_books():
  22.     conn = sqlite3.connect('books.db')
  23.     cursor = conn.cursor()
  24.     cursor.execute('SELECT * FROM books')
  25.     books = cursor.fetchall()
  26.     conn.close()
  27.     return books
  28. def update_book(book_id, title=None, author=None, year=None):
  29.     updates = []
  30.     params = []
  31.     if title is not None:
  32.         updates.append("title=?")
  33.         params.append(title)
  34.     if author is not None:
  35.         updates.append("author=?")
  36.         params.append(author)
  37.     if year is not None:
  38.         updates.append("year=?")
  39.         params.append(year)
  40.     params.append(book_id)
  41.     update_query = f"UPDATE books SET {', '.join(updates)} WHERE id=?"
  42.    
  43.     conn = sqlite3.connect('books.db')
  44.     cursor = conn.cursor()
  45.     cursor.execute(update_query, params)
  46.     conn.commit()
  47.     conn.close()
  48. def delete_book(book_id):
  49.     conn = sqlite3.connect('books.db')
  50.     cursor = conn.cursor()
  51.     cursor.execute('DELETE FROM books WHERE id=?', (book_id,))
  52.     conn.commit()
  53.     conn.close()
  54. # 初始化数据库
  55. init_db()
  56. # 添加几本书
  57. add_book("Python Programming", "John Doe", 2020)
  58. add_book("Advanced SQL", "Jane Smith", 2019)
  59. # 显示所有书籍
  60. print("All Books:")
  61. for book in get_books():
  62.     print(book)
  63. # 更新一本书的信息
  64. update_book(1, title="Learning Python", year=2021)
  65. # 再次显示所有书籍以确认更新
  66. print("\nUpdated Books List:")
  67. for book in get_books():
  68.     print(book)
  69. # 删除一本书
  70. delete_book(2)
  71. # 显示最终的书籍列表
  72. print("\nFinal Books List After Deletion:")
  73. for book in get_books():
  74.     print(book)
复制代码
以上代码展示了一个完整的图书管理系统的根本框架,涵盖了数据库初始化、增加、读取、更新和删除操纵。这不仅是一个很好的训练项目,也为你将来开发更复杂的应用打下了坚实的底子。
进阶秘笈:利用ORM让Python与数据库交互更加优雅

随着项目标复杂度渐渐增加,直接编写SQL语句可能会变得越来越繁琐。这时,就轮到对象关系映射(Object-Relational Mapping, ORM)登场了。ORM提供了一种更高条理的抽象,使得我们可以像操纵普通Python对象一样来操纵数据库中的记载,从而极大地进步了开发服从。
利用SQLAlchemy进行ORM操纵

SQLAlchemy是最受欢迎的Python ORM之一。下面是一个简化的例子,展示怎样利用SQLAlchemy来简化前面提到的图书管理系统。
安装SQLAlchemy

  1. pip install sqlalchemy
复制代码
示例代码:基于SQLAlchemy的图书管理系统

  1. from sqlalchemy import create_engine, Column, Integer, String
  2. from sqlalchemy.ext.declarative import declarative_base
  3. from sqlalchemy.orm import sessionmaker
  4. # 创建基类
  5. Base = declarative_base()
  6. # 定义Book模型
  7. class Book(Base):
  8.     __tablename__ = 'books'
  9.    
  10.     id = Column(Integer, primary_key=True)
  11.     title = Column(String)
  12.     author = Column(String)
  13.     year = Column(Integer)
  14. # 初始化数据库连接
  15. engine = create_engine('sqlite:///books_orm.db')
  16. Base.metadata.create_all(engine)
  17. # 创建Session
  18. Session = sessionmaker(bind=engine)
  19. session = Session()
  20. # 添加新的书籍
  21. new_book = Book(title="Python Mastery", author="Alex Johnson", year=2022)
  22. session.add(new_book)
  23. session.commit()
  24. # 查询所有书籍
  25. all_books = session.query(Book).all()
  26. for book in all_books:
  27.     print(f"ID: {book.id}, Title: {book.title}, Author: {book.author}, Year: {book.year}")
  28. # 更新书籍信息
  29. book_to_update = session.query(Book).filter_by(id=1).first()
  30. if book_to_update:
  31.     book_to_update.title = "Mastering Python"
  32.     session.commit()
  33. # 删除一本书
  34. book_to_delete = session.query(Book).filter_by(id=1).first()
  35. if book_to_delete:
  36.     session.delete(book_to_delete)
  37.     session.commit()
  38. # 最终检查
  39. final_books = session.query(Book).all()
  40. for book in final_books:
  41.     print(f"ID: {book.id}, Title: {book.title}, Author: {book.author}, Year: {book.year}")
  42. # 关闭Session
  43. session.close()
复制代码
在这个例子中,我们界说了一个Book类来代表数据库中的表,并利用SQLAlchemy提供的API来进行CRUD操纵。这种方式不仅使代码更加清楚易懂,还减少了出错的可能性,非常适合大型项目。

通过这篇文章的学习,希望你能对怎样利用Python进行数据库操纵有一个全面的明白。无论是简单的小项目还是企业级应用,Python及其丰富的库都为你提供了强有力的支持。现在就动手实践起来吧,让你的数据管理工作变得更加高效和风趣!

   嘿!欢迎光临我的小小博客天地——这里就是咱们畅聊的大本营!能在这儿遇见你真是太棒了!我希望你能感受到这里轻松愉快的氛围,就像老朋友围炉夜话一样温馨。
  
  这里不仅有好玩的内容和知识等着你,还特别欢迎你畅所欲言,分享你的想法和见解。你可以把这里当作本身的家,无论是工作之余的小憩,还是寻找灵感的驿站,我都希望你能在这里找到属于你的那份快乐和满足。
让我们一起探索新奇的事物,分享生存的点滴,让这个小角落成为我们共同的精力故里。快来一起加入这场精彩的对话吧!无论你是新手上路还是资深玩家,这里都有你的位置。记得在评论区留下你的足迹,让我们彼此之间的交换更加丰富多元。等待与你共同创造更多优美的回想!
  
  欢迎来鞭笞我:master_chenchen
  
  【内容介绍】
  

  • 【算法提拔】:算法头脑提拔,大厂内卷,人生无常,大厂包小厂,呜呜呜。卷到末了各人都是地中海。
  • 【sql数据库】:当你在海量数据中迷失方向时,SQL就像是一位超级英雄,瞬间就能帮你定位到宝藏的位置。快来和这位神通广大的小同伴交个朋友吧!
    【微信小程序知识点】:小程序已经渗透我们生存的方方面面,学习了解微信小程序开发是非常有必要的,这里将介绍微信小程序的各种知识点与踩坑记载。- 【python知识】:它简单易学,却又功能强大,就像把戏师手中的魔杖,一挥就能变出各种神奇的东西。Python,不仅是代码的艺术,更是程序员的快乐源泉!
    【AI技能探讨】:学习AI、了解AI、然后被AI替换、末了被AI使唤(手动狗头)
  
  好啦,小同伴们,今天的探索之旅就到这里啦!感谢你们一路相伴,一同走过这段充满挑衅和乐趣的技能路程。如果你有什么想法或建议,记得在评论区留言哦!要知道,每一次交换都是一次心灵的碰撞,大概你的一个小小火花就能点燃我下一个大大的创意呢!
末了,别忘了给这篇文章点个赞,分享给你的朋友们,让更多的人加入到我们的技能各人庭中来。咱们下次再见时,希望能有更多的故事和履历与各人分享。记住,无论何时何地,只要心中有热爱,脚下就有气力!
  
  对了,各位看官,小生才情有限,笔墨之间难免会有不尽如人意之处,还望多多包涵,不吝见教。咱们在这个小小的网络世界里相遇,真是缘分一场!我真心希望能和各人一起探索、学习和成长。固然这里的文字可能不够渊博,但也希望能给各位带来些许帮助。如果发现什么题目大概有啥建议,请务必告诉我,让我有机会做得更好!感激不尽,咱们一起加油哦!
  
  那么,今天的分享就到这里了,希望你们喜好。接下来的日子里,记得给本身一个大大的拥抱,因为你真的很棒!咱们下次见,愿你每天都有美意情,技能之路越走越宽广!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表