SQLAlchemy ialah sumber terbuka Pemetaan Perhubungan Objek (ORM) alat dalam python, yang boleh membantu anda memetakan Python objek ke jadual dalam pangkalan data mudah untuk beroperasi dalam pangkalan data . SQLAlchemy menyokong pelbagai pangkalan data, termasuk Mysql, postgresql, SQLite, dll.
Pertama, anda perlu memasang SQLAlchemy dalam persekitaran Python anda. Anda boleh memasangnya menggunakan arahan berikut:
pip install sqlalchemy
Sebelum menggunakan SQLAlchemy, anda perlu mencipta enjin pangkalan data terlebih dahulu. Enjin pangkalan data ialah antara muka yang digunakan SQLAlchemy untuk berkomunikasi dengan pangkalan data. Anda boleh menggunakan kod berikut untuk mencipta enjin pangkalan data:
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://user:passWord@host:port/database")
Antaranya, mysql+pymysql
是数据库的类型,user
、password
、host
、port
和 database
ialah nama pengguna, kata laluan, hos, nombor port dan nama pangkalan data masing-masing.
Session ialah objek yang digunakan oleh SQLAlchemy untuk berinteraksi dengan pangkalan data. Anda boleh menggunakan kod berikut untuk membuat sesi:
Session = sessionmaker(bind=engine) session = Session()
Anda boleh menggunakan sesi untuk melakukan pelbagai operasi pada pangkalan data, seperti pertanyaan, sisipan, kemas kini dan pemadaman. Berikut adalah beberapa operasi yang biasa digunakan:
Anda boleh menggunakan kod berikut untuk menanyakan data:
results = session.query(User).filter(User.name == "John").all()
Antaranya, kaedah User
是您要查询的表,filter()
方法用于过滤查询结果,all()
digunakan untuk mendapatkan semua hasil pertanyaan.
Anda boleh menggunakan kod berikut untuk memasukkan data:
new_user = User(name="John", age=30) session.add(new_user) session.commit()
Antaranya, kaedah User
是您要插入数据的表,new_user
是您要插入的新数据,add()
方法用于将新数据添加到会话中,commit()
digunakan untuk melakukan semua pengubahsuaian dalam sesi.
Anda boleh menggunakan kod berikut untuk mengemas kini data:
user = session.query(User).filter(User.name == "John").first() user.age = 31 session.commit()
Antaranya, kaedah User
是您要更新数据的表,filter()
方法用于过滤查询结果,first()
方法用于获取第一个查询结果,age
是您要更新的字段,commit()
digunakan untuk melakukan semua pengubahsuaian dalam sesi.
Anda boleh menggunakan kod berikut untuk memadam data:
user = session.query(User).filter(User.name == "John").first() session.delete(user) session.commit()
Antaranya, kaedah User
是您要删除数据的表,filter()
方法用于过滤查询结果,first()
方法用于获取第一个查询结果,delete()
方法用于删除数据,commit()
digunakan untuk melakukan semua pengubahsuaian dalam sesi.
SQLAlchemy membantu anda memetakan objek Python dengan mudah ke jadual dalam pangkalan data anda. Anda boleh menggunakan kod berikut untuk menentukan peta perhubungan:
class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True) name = Column(String(50), unique=True) age = Column(Integer) class Address(Base): __tablename__ = "address" id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey("user.id")) address = Column(String(100)) # 创建关系映射 User.addresses = relationship("Address", back_populates="user") Address.user = relationship("User", back_populates="addresses")
Antaranya, fungsi User
和 Address
是您要映射的两个表,__tablename__
属性指定了表的名称,id
属性指定了主键,name
、age
和 address
属性指定了表的字段。ForeignKey()
函数用于指定外键关系。relationship()
digunakan untuk menentukan pemetaan hubungan.
SQLAlchemy menyediakan pelbagai teknik pengoptimuman pertanyaan yang boleh membantu anda meningkatkan prestasi pertanyaan. Berikut ialah beberapa teknik pengoptimuman pertanyaan yang biasa digunakan:
Anda boleh menggunakan pertanyaan kelompok untuk meningkatkan prestasi pertanyaan. Pertanyaan kelompok boleh menanyakan berbilang baris data pada satu masa. Anda boleh menggunakan kod berikut untuk melakukan pertanyaan kelompok:
users = session.query(User).filter(User.age > 18).all()
Antaranya, kaedah User
是您要查询的表,filter()
方法用于过滤查询结果,all()
digunakan untuk mendapatkan semua hasil pertanyaan.
Anda boleh menggunakan indeks untuk meningkatkan prestasi pertanyaan. Indeks membantu pangkalan data mencari data yang ingin anda tanyakan dengan cepat. Anda boleh menggunakan kod berikut untuk membuat indeks:
session.execute("CREATE INDEX idx_user_age ON user (age)")
di mana user
是您要创建索引的表,age
ialah medan yang anda ingin indeks.
SQLAlchemy menyokong pengurusan transaksi. Transaksi membantu anda memastikan operasi pangkalan data sama ada semuanya berjaya atau semuanya gagal. Anda boleh menggunakan kod berikut untuk memulakan transaksi:
session.begin()
Anda boleh menggunakan kod berikut untuk menghantar transaksi:
session.commit()
您可以使用以下代码来回滚一个事务:
session.rollback()
SQLAlchemy 是一个功能强大且易于使用的 ORM 工具。它可以帮助您轻松地将 Python 对象与数据库中的表进行映射,并通过简单的 Python 代码来对数据库进行操作。本文介绍了 SQLAlchemy 的基本使用和进阶使用。希望您能通过本文学习到 SQLAlchemy 的使用技巧,并将其应用到您的实际项目中。
Atas ialah kandungan terperinci Petua praktikal Python SQLAlchemy: daripada orang baru kepada pakar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!