在Python中,ORM(對(duì)象關(guān)系映射)框架用于將數(shù)據(jù)庫(kù)中的數(shù)據(jù)和Python對(duì)象進(jìn)行映射,使程序員可以使用面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫(kù),而不必直接編寫SQL語(yǔ)句。
常見(jiàn)的Python ORM框架包括:SQLAlchemy、Django ORM、Peewee等。
使用ORM框架的一般步驟如下:
定義模型類:通過(guò)定義Python類的方式,將數(shù)據(jù)庫(kù)中的表映射成為類,其中類的屬性對(duì)應(yīng)表的字段,類的方法對(duì)應(yīng)表的操作(增刪改查)。
建立數(shù)據(jù)庫(kù)連接:使用ORM框架提供的API,建立與數(shù)據(jù)庫(kù)的連接。
創(chuàng)建表結(jié)構(gòu):通過(guò)調(diào)用ORM框架提供的方法,根據(jù)模型類創(chuàng)建對(duì)應(yīng)的表結(jié)構(gòu)。
增刪改查操作:通過(guò)調(diào)用模型類的方法,進(jìn)行數(shù)據(jù)庫(kù)的增刪改查操作。例如,創(chuàng)建對(duì)象并保存到數(shù)據(jù)庫(kù)中、更新對(duì)象的屬性并保存、根據(jù)條件查詢數(shù)據(jù)庫(kù)等。
關(guān)閉數(shù)據(jù)庫(kù)連接:在程序結(jié)束時(shí),關(guān)閉與數(shù)據(jù)庫(kù)的連接。
以下是一個(gè)使用SQLAlchemy作為ORM框架的示例:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 創(chuàng)建引擎
engine = create_engine('數(shù)據(jù)庫(kù)連接字符串')
# 創(chuàng)建會(huì)話
Session = sessionmaker(bind=engine)
session = Session()
# 創(chuàng)建基類
Base = declarative_base()
# 定義模型類
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 創(chuàng)建表結(jié)構(gòu)
Base.metadata.create_all(engine)
# 增刪改查操作
user = User(name='Alice', age=20)
session.add(user)
session.commit()
user.age = 22
session.commit()
users = session.query(User).filter(User.age > 18).all()
for user in users:
print(user.name, user.age)
# 關(guān)閉會(huì)話
session.close()
以上示例中,首先創(chuàng)建了數(shù)據(jù)庫(kù)引擎和會(huì)話,并定義了一個(gè)模型類User
,然后根據(jù)模型類創(chuàng)建表結(jié)構(gòu),接著進(jìn)行了增刪改查操作。最后關(guān)閉了會(huì)話。