python从0快速上手(十四)数据库操作 你可以定义模型类来映射数据库表。

Python学习:数据库操作篇

在这个信息爆炸的时代,数据库就像是一个个巨大的宝藏库,里面藏着无数珍贵的数据宝石。而Python,就是那把能够打开这些宝藏库的神奇钥匙。在这一章中,我们将一起学习如何使用Python来操作数据库,包括SQLite、ORM(对象关系映射)以及NoSQL数据库。

1. SQLite

SQLite是一个轻量级的数据库,它不需要独立的服务器进程,数据库文件就是它存储数据的地方。在Python中,我们可以使用sqlite3模块来操作SQLite数据库。

创建SQLite数据库:
在Python中,你可以通过sqlite3模块连接到一个SQLite数据库,如果数据库不存在,它将自动创建。

import sqlite3
def create_connection(db_file):
 """ 创建到SQLite数据库的连接 """
 conn = None
 try:
 conn = sqlite3.connect(db_file)
 return conn
 except Exception as e:
 print(e)
def create_table(conn):
 """ 创建表 """
 try:
 c = conn.cursor()
 c.execute("""
 CREATE TABLE IF NOT EXISTS users (
 id integer PRIMARY KEY,
 name text NOT NULL,
 age integer
 );
 """)
 except Exception as e:
 print(e)
# 创建数据库连接
conn = create_connection("mydatabase.db")
if conn is not None:
 create_table(conn)
else:
 print("无法创建数据库连接。")

在这个例子中,我们创建了一个名为mydatabase.db的SQLite数据库,并在其中创建了一个名为users的表。

插入数据:
你可以使用execute方法来插入数据。

def insert_user(conn, user):
 """ 新增用户 """
 sql = ''' INSERT INTO users(name, age)
 VALUES(?,?) '''
 cur = conn.cursor()
 cur.execute(sql, user)
 conn.commit()
 return cur.lastrowid
# 插入数据
user = ('Kimi', 30)
id = insert_user(conn, user)
print(f"用户ID:{id}")

在这个例子中,我们向users表中插入了一个新的用户。

查询数据:
你可以使用execute方法来查询数据。

def select_all_users(conn):
 """ 查询所有用户 """
 cur = conn.cursor()
 cur.execute("SELECT * FROM users")
 rows = cur.fetchall()
 for row in rows:
 print(row)
# 查询数据
select_all_users(conn)

在这个例子中,我们查询了users表中的所有用户。

更新和删除数据:
你可以使用execute方法来更新和删除数据。

def update_user(conn, user):
 """ 更新用户 """
 sql = ''' UPDATE users
 SET name = ?
 WHERE id = ?'''
 cur = conn.cursor()
 cur.execute(sql, user)
 conn.commit()
def delete_user(conn, id):
 """ 删除用户 """
 sql = 'DELETE FROM users WHERE id=?'
 cur = conn.cursor()
 cur.execute(sql, (id,))
 conn.commit()
# 更新数据
update_user(conn, ('Moonshot', 30))
# 删除数据
delete_user(conn, 1)

在这个例子中,我们更新了一个用户的名字,并删除了一个用户。

实例:创建一个图书馆管理系统

def create_library_db():
 conn = create_connection("library.db")
 if conn is not None:
 create_table(conn)
 return conn
 else:
 print("无法创建数据库连接。")
 return None
def add_book(conn, book):
 """ 添加书籍 """
 sql = ''' INSERT INTO books(title, author, year)
 VALUES(?,?,?) '''
 cur = conn.cursor()
 cur.execute(sql, book)
 conn.commit()
 return cur.lastrowid
def list_books(conn):
 """ 列出所有书籍 """
 cur = conn.cursor()
 cur.execute("SELECT * FROM books")
 rows = cur.fetchall()
 for row in rows:
 print(row)
# 创建数据库连接
conn = create_library_db()
if conn is not None:
 # 添加书籍
 book = ('Python编程', 'Kimi', 2024)
 id = add_book(conn, book)
 print(f"书籍ID:{id}")
 # 列出书籍
 list_books(conn)
else:
 print("无法创建数据库连接。")

在这个例子中,我们创建了一个图书馆管理系统,它允许我们添加书籍和列出所有书籍。

2. ORM(对象关系映射)

ORM是一种编程技术,它允许你使用面向对象的方法来操作数据库。在Python中,我们可以使用SQLAlchemy这样的ORM库来操作数据库。

安装SQLAlchemy:
首先,你需要安装SQLAlchemy。

pip install SQLAlchemy

定义模型:
你可以定义模型类来映射数据库表。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
 __tablename__ = 'users'
 id = Column(Integer, primary_key=True)
 name = Column(String)
 age = Column(Integer)
# 创建数据库引擎
engine = create_engine('sqlite:///mydatabase.db')
# 创建表
Base.metadata.create_all(engine)

在这个例子中,我们定义了一个User模型,并创建了一个SQLite数据库。

添加数据:
你可以使用ORM会话来添加数据。

Session = sessionmaker(bind=engine)
session = Session()
new_user = User(name='Kimi', age=30)
session.add(new_user)
session.commit()

在这个例子中,我们添加了一个新的用户。

查询数据:
你可以使用ORM会话来查询数据。

# 查询所有用户
users = session.query(User).all()
for user in users:
 print(user.name, user.age)

在这个例子中,我们查询了所有用户。

更新和删除数据:
你可以使用ORM会话来更新和删除数据。

# 更新用户
user_to_update = session.query(User).filter_by(name='Kimi').first()
user_to_update.age = 31
session.commit()
# 删除用户
user_to_delete = session.query(User).filter_by(name='Kimi').first()
session.delete(user_to_delete)
session.commit()

在这个例子中,我们更新了一个用户的年龄,并删除了一个用户。

实例:创建一个博客系统

class Post(Base):
 __tablename__ = 'posts'
 id = Column(Integer, primary_key=True)
 title = Column(String)
 content = Column(String)
# 创建表
Base.metadata.create_all(engine)
# 添加文章
new_post = Post(title='Python学习大纲', content='这是一篇关于Python学习大纲的文章。')
session.add(new_post)
session.commit()
# 查询文章
posts = session.query(Post).all()
for post in posts:
 print(post.title, post.content)
# 更新文章
post_to_update = session.query(Post).filter_by(title='Python学习大纲').first()
post_to_update.content = '这是一篇更新后的关于Python学习大纲的文章。'
session.commit()
# 删除文章
post_to_delete = session.query(Post).filter_by(title='Python学习大纲').first()
session.delete(post_to_delete)
session.commit()

在这个例子中,我们创建了一个博客系统,它允许我们添加文章、查询文章、更新文章和删除文章。

3. NoSQL数据库

NoSQL数据库是一种非关系型数据库,它不需要固定的表结构。在Python中,我们可以使用PyMongo这样的库来操作MongoDB这样的NoSQL数据库。

安装PyMongo:
首先,你需要安装PyMongo。

pip install pymongo

连接到MongoDB:
你可以使用PyMongo连接到MongoDB。

from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]

在这个例子中,我们连接到了一个名为mydatabase的MongoDB数据库。

插入数据:
你可以使用PyMongo插入数据。

users_collection = db["users"]
new_user = {"name": "Kimi", "age": 30}
users_collection.insert_one(new_user)

在这个例子中,我们向users集合中插入了一个新的用户。

查询数据:
你可以使用PyMongo查询数据。

users = users_collection.find()
for user in users:
 print(user["name"], user["age"])

在这个例子中,我们查询了users集合中的所有用户。

更新和删除数据:
你可以使用PyMongo更新和删除数据。

# 更新用户
users_collection.update_one({"name": "Kimi"}, {"$set": {"age": 31}})
# 删除用户
users_collection.delete_one({"name": "Kimi"})

在这个例子中,我们更新了一个用户的年龄,并删除了一个用户。

实例:创建一个购物车系统

products_collection = db["products"]
carts_collection = db["carts"]
# 添加商品
new_product = {"name": "Python编程书籍", "price"
: 100}
products_collection.insert_one(new_product)
# 添加购物车
new_cart = {"user": "Kimi", "items": [{"product": "Python编程书籍", "quantity": 2}]}
carts_collection.insert_one(new_cart)
# 查询购物车
carts = carts_collection.find()
for cart in carts:
 print(cart["user"], cart["items"])
# 更新购物车
carts_collection.update_one({"user": "Kimi"}, {"$set": {"items": [{"product": "Python编程书籍", "quantity": 3}]}})

在这个例子中,我们创建了一个购物车系统,它允许我们添加商品、添加购物车、查询购物车和更新购物车。

小结

数据库操作是Python中的一项强大技能,它让我们的程序能够存储和查询大量的数据。通过SQLite,我们可以操作关系型数据库。通过ORM,我们可以以面向对象的方式操作数据库。通过NoSQL数据库,我们可以操作非关系型数据库。

现在,你已经掌握了Python中数据库操作的基础。但是,这只是冰山一角。在编程的世界里,还有更多高级的概念等着你去探索。编程就像是一场冒险,而你已经迈出了第一步。祝你在编程的世界里旅途愉快!??

作者:舔狼原文地址:https://blog.csdn.net/weixin_39346529/article/details/142966188

%s 个评论

要回复文章请先登录注册