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中数据库操作的基础。但是,这只是冰山一角。在编程的世界里,还有更多高级的概念等着你去探索。编程就像是一场冒险,而你已经迈出了第一步。祝你在编程的世界里旅途愉快!🐍💻

作者:舔狼

物联沃分享整理
物联沃-IOTWORD物联网 » python从0快速上手(十四)数据库操作

发表回复