Python中的数据库操作和ORM框架

清风徐来 2020-05-17 ⋅ 18 阅读

在开发过程中,处理数据库是一个常见的任务之一。Python提供了多种库和框架来进行数据库操作,方便开发人员进行数据存储和检索。此外,Python还提供了ORM(对象关系映射)框架,使得开发人员可以使用面向对象的方式来操作数据库,而不是直接使用SQL语句。

数据库操作

Python中的数据库操作通常通过第三方库来实现,以下是几个常用的库:

1. SQLite3

SQLite3是一个轻量级的嵌入式数据库,可以在Python中直接使用,无需额外配置。以下是一个使用SQLite3进行数据库操作的示例代码:

import sqlite3

# 连接数据库
conn = sqlite3.connect('test.db')

# 创建游标
cur = conn.cursor()

# 创建表
cur.execute('''CREATE TABLE IF NOT EXISTS users
               (id INT PRIMARY KEY NOT NULL,
                name TEXT NOT NULL,
                age INT)''')

# 插入数据
cur.execute("INSERT INTO users VALUES (1, 'Tom', 20)")
cur.execute("INSERT INTO users VALUES (2, 'Jerry', 25)")

# 提交事务
conn.commit()

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

# 关闭游标和数据库连接
cur.close()
conn.close()

2. MySQL

MySQL是一种常用的关系型数据库,通过Python的MySQLdb库可以方便地进行数据库操作。以下是一个使用MySQLdb进行数据库操作的示例代码:

import MySQLdb

# 连接数据库
conn = MySQLdb.connect(host='localhost', user='root', passwd='password', db='test')

# 创建游标
cur = conn.cursor()

# 创建表
cur.execute('''CREATE TABLE IF NOT EXISTS users (
               id INT PRIMARY KEY NOT NULL,
               name VARCHAR(20) NOT NULL,
               age INT)''')

# 插入数据
cur.execute("INSERT INTO users VALUES (1, 'Tom', 20)")
cur.execute("INSERT INTO users VALUES (2, 'Jerry', 25)")

# 提交事务
conn.commit()

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

# 关闭游标和数据库连接
cur.close()
conn.close()

ORM框架

ORM框架可以将数据库中的表映射为Python中的对象,使得开发人员可以使用面向对象的方式来进行数据库操作。以下是两个常用的Python ORM框架的简介:

1. SQLAlchemy

SQLAlchemy是Python中最受欢迎的ORM框架之一,它支持多种数据库,包括SQLite, MySQL, PostgreSQL等。使用SQLAlchemy,可以通过定义类来映射数据库表,并使用类的实例进行数据库操作。以下是一个使用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:///test.db')
Session = sessionmaker(bind=engine)
session = Session()

# 创建基类
Base = declarative_base()

# 定义模型类
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String(20), nullable=False)
    age = Column(Integer)

    def __repr__(self):
        return f"User(id={self.id}, name={self.name}, age={self.age})"

# 创建表
Base.metadata.create_all(engine)

# 插入数据
user1 = User(id=1, name='Tom', age=20)
user2 = User(id=2, name='Jerry', age=25)
session.add(user1)
session.add(user2)
session.commit()

# 查询数据
users = session.query(User).all()
for user in users:
    print(user)

# 关闭会话
session.close()

2. Django

Django是一个全功能的Web框架,也包含了ORM功能。Django的ORM可以自动生成数据库表,并通过模型类进行数据库操作。以下是一个使用Django进行数据库操作的示例代码:

# 定义模型类
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()

    def __str__(self):
        return f"User(name={self.name}, age={self.age})"

通过上述的代码,Django会自动将User模型类映射为数据库中的users表。使用Django的ORM,可以方便地进行数据库的增删改查:

# 插入数据
user1 = User(name='Tom', age=20)
user2 = User(name='Jerry', age=25)
user1.save()
user2.save()

# 查询数据
users = User.objects.all()
for user in users:
    print(user)

总结

Python提供了丰富的库和框架来进行数据库操作,开发人员可以根据项目需求选择合适的库和框架。通过学习和使用这些工具,可以提高开发效率,简化数据库操作。无论是直接的数据库操作还是使用ORM框架,Python都能满足不同项目的需求。


全部评论: 0

    我有话说: