Rumah > pembangunan bahagian belakang > Tutorial Python > Petua praktikal Python SQLAlchemy: daripada orang baru kepada pakar

Petua praktikal Python SQLAlchemy: daripada orang baru kepada pakar

王林
Lepaskan: 2024-02-25 08:00:57
ke hadapan
813 orang telah melayarinya

Python SQLAlchemy 实战秘籍:从新手到专家

sqlPengenalan Alkimia

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.

Penggunaan asas SQLAlchemy

1. Pasang SQLAlchemy

Pertama, anda perlu memasang SQLAlchemy dalam persekitaran Python anda. Anda boleh memasangnya menggunakan arahan berikut:

pip install sqlalchemy
Salin selepas log masuk

2. Cipta enjin pangkalan data

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")
Salin selepas log masuk

Antaranya, mysql+pymysql 是数据库的类型,userpasswordhostportdatabase ialah nama pengguna, kata laluan, hos, nombor port dan nama pangkalan data masing-masing.

3. Buat sesi

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()
Salin selepas log masuk

4. Pangkalan data operasi

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:

4.1 Data pertanyaan

Anda boleh menggunakan kod berikut untuk menanyakan data:

results = session.query(User).filter(User.name == "John").all()
Salin selepas log masuk

Antaranya, kaedah User 是您要查询的表,filter() 方法用于过滤查询结果,all() digunakan untuk mendapatkan semua hasil pertanyaan.

4.2 Masukkan data

Anda boleh menggunakan kod berikut untuk memasukkan data:

new_user = User(name="John", age=30)
session.add(new_user)
session.commit()
Salin selepas log masuk

Antaranya, kaedah User 是您要插入数据的表,new_user 是您要插入的新数据,add() 方法用于将新数据添加到会话中,commit() digunakan untuk melakukan semua pengubahsuaian dalam sesi.

4.3 Kemas kini data

Anda boleh menggunakan kod berikut untuk mengemas kini data:

user = session.query(User).filter(User.name == "John").first()
user.age = 31
session.commit()
Salin selepas log masuk

Antaranya, kaedah User 是您要更新数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,age 是您要更新的字段,commit() digunakan untuk melakukan semua pengubahsuaian dalam sesi.

4.4 Padam data

Anda boleh menggunakan kod berikut untuk memadam data:

user = session.query(User).filter(User.name == "John").first()
session.delete(user)
session.commit()
Salin selepas log masuk

Antaranya, kaedah User 是您要删除数据的表,filter() 方法用于过滤查询结果,first() 方法用于获取第一个查询结果,delete() 方法用于删除数据,commit() digunakan untuk melakukan semua pengubahsuaian dalam sesi.

Penggunaan lanjutan SQLAlchemy

1. Pemetaan hubungan

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")
Salin selepas log masuk

Antaranya, fungsi UserAddress 是您要映射的两个表,__tablename__ 属性指定了表的名称,id 属性指定了主键,nameageaddress 属性指定了表的字段。ForeignKey() 函数用于指定外键关系。relationship() digunakan untuk menentukan pemetaan hubungan.

2. PertanyaanPengoptimuman

SQLAlchemy menyediakan pelbagai teknik pengoptimuman pertanyaan yang boleh membantu anda meningkatkan prestasi pertanyaan. Berikut ialah beberapa teknik pengoptimuman pertanyaan yang biasa digunakan:

2.1 Pertanyaan kelompok

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()
Salin selepas log masuk

Antaranya, kaedah User 是您要查询的表,filter() 方法用于过滤查询结果,all() digunakan untuk mendapatkan semua hasil pertanyaan.

2.2 Menggunakan index

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)")
Salin selepas log masuk

di mana user 是您要创建索引的表,age ialah medan yang anda ingin indeks.

3. Hal EhwalPengurusan

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()
Salin selepas log masuk

Anda boleh menggunakan kod berikut untuk menghantar transaksi:

session.commit()
Salin selepas log masuk

您可以使用以下代码来回滚一个事务:

session.rollback()
Salin selepas log masuk

结语

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!

sumber:lsjlt.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan