Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang rangka kerja ORM Flask-SQLAlchemy dalam Python

Penjelasan terperinci tentang rangka kerja ORM Flask-SQLAlchemy dalam Python

WBOY
WBOYasal
2023-06-09 23:48:072004semak imbas

Flask-SQLAlchemy ialah rangka kerja ORM (Object Relational Mapping) berdasarkan SQLAlchemy, sesuai untuk aplikasi Flask. Rangka kerja ORM melindungi operasi pangkalan data asas dan menyediakan antara muka pengaturcaraan Python, membenarkan pembangun menggunakan kod Python secara langsung untuk mengendalikan pangkalan data tanpa menulis pernyataan SQL.

Artikel ini akan memperkenalkan penggunaan rangka kerja Flask-SQLAlchemy secara terperinci, termasuk cara menyambung ke pangkalan data, mencipta jadual, memasukkan, mengemas kini, memadam data dan data pertanyaan.

Sambung ke pangkalan data

Sebelum menggunakan Flask-SQLAlchemy, anda perlu mengkonfigurasi sambungan pangkalan data dalam Flask terlebih dahulu. Kaedah khusus adalah seperti berikut:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接信息'  # 数据库连接信息
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 是否追踪对象的修改
db = SQLAlchemy(app)

Antaranya, SQLALCHEMY_DATABASE_URI ialah maklumat sambungan pangkalan data. Jika anda menggunakan SQLite, formatnya ialah sqlite:///文件路径; jika ia adalah MySQL, formatnya ialah mysql+pymysql://用户名:密码@主机名/数据库名 (pymysql ialah perpustakaan Python yang digunakan untuk menyambung ke MySQL, formatnya ialah postgresql://用户名:密码@主机名/数据库名);

SQLALCHEMY_TRACK_MODIFICATIONS menunjukkan sama ada untuk menjejak pengubahsuaian objek. Jika ditetapkan kepada Benar, keadaan objek disemak dan ditulis ke pangkalan data pada akhir setiap permintaan. Ciri ini boleh digunakan untuk penyahpepijatan dan pengoptimuman prestasi, tetapi disertakan dengan beberapa overhed. Oleh itu, adalah disyorkan untuk mematikannya dalam persekitaran pengeluaran.

Buat jadual

Flask-SQLAlchemy menyokong mentakrifkan jadual melalui kelas Python. Setiap kelas sepadan dengan jadual pangkalan data, dan atribut dalam kelas sepadan dengan medan jadual pangkalan data.

Berikut ialah contoh:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

Antaranya, db.Model ialah kelas asas bagi semua kelas model, menunjukkan bahawa kelas ini ialah model pangkalan data. id, nama pengguna dan e-mel ialah medan jadual ini, dengan id ialah kunci utama, nama pengguna dan e-mel adalah unik dan tidak boleh kosong. Kaedah __repr__() digunakan untuk mencetak objek untuk penyahpepijatan yang mudah.

Untuk mencipta jadual ini, cuma jalankan arahan berikut:

from app import db
db.create_all()

Ini akan mencipta jadual bernama Pengguna dalam pangkalan data. Jika ia sudah wujud, ia tidak akan dicipta lagi. Jika terdapat berbilang jadual yang perlu dibuat, ia boleh dibuat menggunakan perintah db.create_all() di tempat yang sama.

Sisipkan data

Untuk memasukkan data ke dalam pangkalan data, anda hanya perlu mencipta contoh kelas dan memanggil kaedah add() dan commit().

from app import db
from app.models import User

user = User(username='test', email='test@test.com')
db.session.add(user)
db.session.commit()

Dalam kod di atas, objek Pengguna mula-mula dibuat dan kemudian ditambahkan pada sesi pangkalan data. Akhir sekali, panggil kaedah commit() untuk melakukan transaksi dan simpan data dalam pangkalan data.

Mengemas kini data

Mengemas kini data adalah serupa dengan memasukkan data Anda hanya perlu menanyakan data untuk dikemas kini, mengubah suai atributnya dan menyerahkannya.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
user.email = 'new_test@test.com'
db.session.commit()

Dalam kod di atas, objek Pengguna yang akan dikemas kini terlebih dahulu ditanya berdasarkan nama pengguna, kemudian atribut e-mel diubah suai dan pengubahsuaian diserahkan.

Memadam data

adalah serupa dengan mengemas kini data Anda hanya perlu menanyakan data yang hendak dipadamkan dahulu, dan kemudian memanggil kaedah delete() untuk memadamkannya.

from app import db
from app.models import User

user = User.query.filter_by(username='test').first()
db.session.delete(user)
db.session.commit()

Dalam kod di atas, objek Pengguna yang akan dipadamkan pertama kali ditanya berdasarkan nama pengguna, dan kemudian kaedah delete() dipanggil untuk memadamnya.

Data pertanyaan

Flask-SQLAlchemy menyokong pelbagai kaedah pertanyaan, termasuk pertanyaan mengikut syarat, pengisihan, halaman, dsb.

Pertanyaan mengikut syarat

Pertanyaan mengikut syarat ialah cara yang paling biasa. Anda boleh menggunakan kaedah query.filter() untuk menentukan syarat pertanyaan. Kod sampel adalah seperti berikut:

from app import db
from app.models import User

# 查询所有
users = User.query.all()

# 条件查询
users = User.query.filter_by(username='test').all()

Dalam kod di atas, baris pertama kod menanyakan semua data dalam jadual Pengguna baris kedua menanyakan data mengikut syarat nama pengguna='test' .

Isih pertanyaan

Anda boleh menggunakan kaedah order_by() untuk mengisih hasil pertanyaan. Kod contoh adalah seperti berikut:

from app import db
from app.models import User

# 按名称排序(升序)
users = User.query.order_by(User.username).all()

# 按名称排序(降序)
users = User.query.order_by(User.username.desc()).all()

Dalam kod di atas, baris pertama kod mengisih hasil pertanyaan dalam tertib menaik nama pengguna;

Pertanyaan paging

Anda boleh menggunakan kaedah paging() untuk melaksanakan pertanyaan paging. Kod sampel adalah seperti berikut:

from app import db
from app.models import User

# 每页2条,查询第1页
users = User.query.paginate(1, 2, False)

# 查询第一页
users = User.query.order_by(User.username).paginate(1, 10, False)

Dalam kod di atas, baris pertama pertanyaan kod 2 keping data pada halaman 1; baris kedua pertanyaan kod 10 keping data pada halaman 1 diisih mengikut nama pengguna.

Ringkasan

Flask-SQLAlchemy ialah rangka kerja ORM yang berkuasa yang menyediakan antara muka berkuasa untuk pertanyaan dan mengendalikan pangkalan data, membolehkan pembangun mengendalikan pangkalan data dengan cepat dan mudah. Artikel ini memperkenalkan penggunaan Flask-SQLAlchemy, termasuk mencipta jadual, memasukkan, mengemas kini, memadam dan menanyakan data. Saya harap artikel ini dapat membantu pembaca memahami dan menggunakan Flask-SQLAlchemy dengan lebih baik.

Atas ialah kandungan terperinci Penjelasan terperinci tentang rangka kerja ORM Flask-SQLAlchemy dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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