在Python中,数据库编程通常涉及使用数据库适配器(如psycopg2、sqlite3、PyMySQL等)来连接和操作数据库。然而,许多开发者选择使用对象关系映射(ORM)框架,如SQLAlchemy或Django ORM,以更简洁、更面向对象的方式处理数据库交互。
下面,我将展示如何使用Python的SQLite3库进行数据库编程,以及如何使用SQLAlchemy ORM框架。
使用SQLite3库
SQLite是一个轻量级的数据库,经常被用在Python脚本和应用程序中。下面是一个简单的例子,展示了如何使用SQLite3库来创建一个数据库,创建一个表,并插入、查询数据。
import sqlite3
# 连接到SQLite数据库(如果数据库不存在,它将被创建)
conn = sqlite3.connect('example.db')
# 创建一个游标对象
c = conn.cursor()
# 创建一个表
c.execute('''
CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)
''')
# 插入数据
c.execute("INSERT INTO stocks VALUES ('2023-10-23','BUY','RHAT',100,35.14)")
# 提交事务
conn.commit()
# 查询数据
for row in c.execute('SELECT * FROM stocks'):
print(row)
# 关闭连接
conn.close()
使用SQLAlchemy ORM框架
SQLAlchemy是一个强大的Python ORM框架,它提供了全面的企业级持久性模型。下面是一个使用SQLAlchemy的例子,演示了如何定义模型、创建表、插入和查询数据。
首先,你需要安装SQLAlchemy:
pip install sqlalchemy
然后,你可以使用以下代码:
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, relationship
# 定义模型基类
Base = declarative_base()
# 定义模型
class Stock(Base):
__tablename__ = 'stocks'
id = Column(Integer, primary_key=True)
date = Column(String)
trans = Column(String)
symbol = Column(String)
qty = Column(Integer)
price = Column(Float)
def __repr__(self):
return f"<Stock(symbol='{self.symbol}', qty={self.qty}, price={self.price})>"
# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)
# 创建表
Base.metadata.create_all(engine)
# 创建会话类
Session = sessionmaker(bind=engine)
session = Session()
# 插入数据
new_stock = Stock(date='2023-10-23', trans='BUY', symbol='RHAT', qty=100, price=35.14)
session.add(new_stock)
session.commit()
# 查询数据
stocks = session.query(Stock).all()
for stock in stocks:
print(stock)
# 关闭会话
session.close()