欢迎访问宙启技术站
智能推送

如何处理Python中的数据库操作问题

发布时间:2023-12-04 05:25:59

在Python中进行数据库操作通常有两种方式:使用原生的SQL语句进行操作,或者使用ORM(对象关系映射)工具进行操作。下面将分别对这两种方式进行详细介绍,并给出相应的使用示例。

1. 使用原生的SQL语句进行数据库操作:

使用Python的标准库中的sqlite3模块可以方便地进行原生的SQL数据库操作。下面是一个使用原生SQL语句操作SQLite数据库的例子:

import sqlite3

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

# 创建游标对象
cursor = conn.cursor()

# 创建表格
cursor.execute('CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')

# 插入数据
cursor.execute('INSERT INTO students (name, age) VALUES (?, ?)', ('Alice', 18))
cursor.execute('INSERT INTO students (name, age) VALUES (?, ?)', ('Bob', 20))

# 查询数据
cursor.execute('SELECT * FROM students')
result = cursor.fetchall()
for row in result:
    print(row)

# 更新数据
cursor.execute('UPDATE students SET age = ? WHERE name = ?', (21, 'Alice'))

# 删除数据
cursor.execute('DELETE FROM students WHERE name = ?', ('Bob',))

# 提交更改
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

2. 使用ORM工具进行数据库操作:

ORM是一种将数据库中的表格映射为Python对象的工具。在Python中,比较常用的ORM库有SQLAlchemy、Django ORM等。下面是一个使用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 Student(Base):
    __tablename__ = 'students'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

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

# 插入数据
student = Student(name='Alice', age=18)
session.add(student)
session.commit()

# 查询数据
students = session.query(Student).all()
for student in students:
    print(student.id, student.name, student.age)

# 更新数据
student = session.query(Student).filter(Student.name == 'Alice').one()
student.age = 21
session.commit()

# 删除数据
student = session.query(Student).filter(Student.name == 'Alice').one()
session.delete(student)
session.commit()

# 关闭会话
session.close()

以上是Python中处理数据库操作的两种常用方式,可以根据实际情况选择适合的方式进行操作。