Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang Pangkalan Data rangka kerja ORM dalam Python

Penjelasan terperinci tentang Pangkalan Data rangka kerja ORM dalam Python

WBOY
WBOYasal
2023-06-11 13:34:372269semak imbas

Dalam beberapa tahun kebelakangan ini, Python telah menjadi semakin popular dalam bidang pembangunan sebagai bahasa pengaturcaraan yang mudah dipelajari, mudah digunakan dan sangat fleksibel. Dalam aplikasi Python, rangka kerja ORM (Object-Relational Mapping) memainkan peranan penting, yang bukan sahaja meningkatkan kecekapan pembangunan, tetapi juga memudahkan pembangun mengurus data dan objek.

Dalam rangka kerja ORM, pustaka Pangkalan Data ialah perpustakaan Python yang muncul yang sering digunakan untuk mengakses pangkalan data hubungan semasa proses pembangunan. Walaupun perpustakaan ini masih agak baru dalam dunia pembangunan Python, ia telah menunjukkan potensi yang besar. Oleh itu, dalam artikel ini, kami akan memperkenalkan perpustakaan Pangkalan Data secara terperinci untuk membantu pembangun lebih memahami dan mempelajari rangka kerja ORM Python yang berkuasa ini.

1. Latar belakang pembangunan pangkalan data

Pustaka Pangkalan Data ialah perpustakaan Python ringan yang digunakan untuk memudahkan pembangunan pangkalan data SQL tak segerak. Ia menggunakan asyncio untuk pengaturcaraan tak segerak dan boleh berfungsi dengan pelbagai enjin pangkalan data SQL, seperti PostgreSQL, MySQL, MariaDB, SQLite dan banyak lagi. Selain itu, perpustakaan Pangkalan Data juga menyediakan API yang sangat ringkas dan mudah digunakan.

Matlamat perpustakaan Pangkalan Data adalah untuk membolehkan pembangun membina aplikasi dengan lebih pantas dan menghapuskan banyak kod berulang. Ia berprestasi sangat baik dari segi prestasi dan menyediakan ciri lanjutan seperti pengumpulan sambungan, pengurusan urus niaga, dan banyak peningkatan pemandu tak segerak serta dokumentasi bantuan. Oleh itu, perpustakaan Pangkalan Data sudah pasti merupakan pilihan yang sangat baik untuk perkhidmatan mikro yang kompleks atau aplikasi web yang besar yang memerlukan capaian kolaboratif kepada pangkalan data SQL.

2. Fungsi teras Pangkalan Data

Matlamat reka bentuk perpustakaan Pangkalan Data adalah untuk membolehkan pembangun menggunakan API mudah untuk mencapai interaksi pantas dengan pangkalan data SQL. Di bawah ini kami akan memperkenalkan beberapa fungsi teras pustaka Pangkalan Data:

1 Kod ini ringkas dan jelas

Pustaka Pangkalan Data menggunakan sintaks ringkas Python untuk memaksimumkan kecekapan pembangunan pembangun Semua ciri lanjutan seperti operasi tak segerak dan serentak.

Sebagai contoh, kod berikut mencipta jadual bernama "pengguna". Antaranya, beberapa atribut jadual termasuk ID, Nama, Umur dan E-mel.

import databases

database = databases.Database("sqlite:///example.db")

query = "CREATE TABLE users (ID INT PRIMARY KEY, Name TEXT, Age INT, Email TEXT)"

await database.execute(query=query)

2. API pelanggan dan pelayan kolaboratif

Pustaka pangkalan data menyediakan API peringkat tinggi, yang merangkumi operasi tak segerak dan segerak, supaya kami boleh menyatukan operasi ini apabila menggunakannya .

import database

database = databases.Database("sqlite:///example.db")

# 异步操作(async)
async with database.transaction():
   query = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query, values=values)

# 同步操作
query = "SELECT * FROM users WHERE ID=:id"
values = {"id": 1}
result = database.fetch_one(query=query, values=values)

3. Kumpulan sambungan

Pustaka pangkalan data boleh mengurus isu kumpulan sambungan dan meningkatkan kecekapan akses pangkalan data. Apabila pembangun menggunakan pustaka Pangkalan Data, mereka hanya perlu menentukan saiz kolam sambungan untuk melaksanakan sambungan automatik dengan mudah tanpa perlu mengurus sambungan secara manual, yang sangat mudah.

Sebagai contoh, dalam kod berikut, kami boleh menentukan bilangan maksimum sambungan dan bilangan sambungan minimum, supaya pustaka Pangkalan Data boleh mengurus kumpulan sambungan dengan lebih baik.

import databases

database = databases.Database("sqlite:///example.db", min_size=1, max_size=10)

4. Pengurusan transaksi

Pustaka Pangkalan Data menyediakan pengurusan transaksi bersepadu untuk memastikan konsistensi dan kebolehpercayaan semasa menjalankan operasi. Transaksi ialah ciri DBMS yang sangat penting yang membolehkan pembangun melaksanakan operasi dalam kelompok.

Sebagai contoh, dalam kod di bawah, kami boleh memproses data secara kolaboratif dengan memulakan dan melakukan transaksi secara tidak segerak.

import databases

database = databases.Database("sqlite:///example.db")

async with database.transaction():
   query_1 = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values_1 = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query_1, values=values_1)

   query_2 = "UPDATE users SET Age=:age WHERE ID=:id"
   values_2 = {"age": 25, "id": 1}
   await database.execute(query=query_2, values=values_2)

await database.commit()

5. Menyokong berbilang enjin pangkalan data

Pustaka Pangkalan Data menyokong pelbagai enjin pangkalan data biasa, termasuk MySQL, PostgreSQL, MariaDB, dll. Ini memudahkan kita membina persekitaran pangkalan data yang kita inginkan.

Sebagai contoh, jika kami mempunyai coretan kod berikut, kami boleh memilih enjin pangkalan data yang biasa kami gunakan mengikut keperluan kami.

import databases

database = databases.Database("postgresql://user:[email protected]:5432/example")

三、使用Databases库

在学习使用Databases库之前,我们需要先进行库的安装工作。

1.安装Databases库

我们可以通过以下命令安装Databases库:

pangkalan data pemasangan pip

2.创建数据库连接

要使用Databases库,我们首先需要通过URL字符串为我们的PHP应用程序创建一个与数据库引擎的连接。

pangkalan data import
daripada pangkalan data import Pangkalan Data

pangkalan data = Pangkalan Data("sqlite:///example.db")

3.查询数据

Databases库提供了8个异步和同步函数,可用于查询数据库: `fetch_all()`,`fetch_one()`, `fetch_val()`, `fetch_many()`, `fetch_optional()`, `execute()`, `execute_many()`和`iterate()`

Soal semua baris

result = database.fetch_all("SELECT * FROM users")

Query baris pertama data

result = database.fetch_one( " SELECT * FROM users WHERE ID=:id", value = {"id": 1})

Dapatkan data sel

result = database.fetch_val("SELECT Name FROM users WHERE ID =:id", value = {"id": 1})

Dapatkan berbilang baris data

result = database.fetch_many(query="SELECT * FROM users", values=[ {'id':1}, {'id':2})

Jika data tidak wujud, kembalikan Tiada

result = database.fetch_optional(query="SELECT * FROM users WHERE ID= :id", value={"id": 3})

Laksanakan sebarang pertanyaan (kembali bilangan baris yang dimasukkan)

result = tunggu pangkalan data.execute("INSERT INTO pengguna (ID, Nama, Umur, E-mel) NILAI (:id,:nama,:umur,:e-mel)",value={"id":5, "nama":"John","umur":25," e-mel":" [email protected]"})

Laksanakan sebarang pertanyaan dalam mod kelompok (mengembalikan bilangan baris yang dimasukkan)

hasil = menunggu pangkalan data.execute_many("INSERT INTO users (ID ,Nama,Umur, E-mel) NILAI (:id,:nama,:umur,:e-mel)",nilai=[{"id":5, "nama":"John","umur":25,"e-mel" :"[email protected ]"},{"id":6,"name":"Jack", "age":26,"email":"[email protected]"}])

Gunakan iterator tak segerak untuk memproses data

async dengan database.connection() sebagai sambungan:
async with connection.transaction():

   async for row in connection.iterate(query="SELECT * FROM users"):
      print(row)
4.使用事务

Databases库还提供了事务管理的机制。我们可以使用异步with语句来绑定事务。如果with语句内的所有操作成功完成,则会提交事务。否则,事务将被回滚。

async with database.transaction():
query = "MASUKKAN KE DALAM pengguna (ID,Nama,Umur,E-mel) NILAI (:id,:nama,:umur,:e-mel)"
nilai = {"id": 5, "nama": "Hassen", "age": 26 , "email": "[email protected]"}
tunggu database.execute(query, values)

pertanyaan = "MASUKKAN KE DALAM pengguna1 (ID,Nama,Umur,E-mel) NILAI (:id,:nama,:umur,:e-mel)"
nilai = {"id": 6, "nama": " Fatima", "age": 22, "email": "[email protected]"}
tunggu pangkalan data.execute(query, values)

Di atas ialah pengenalan terperinci pustaka Pangkalan Data dalam Rangka kerja Python ORM . Perpustakaan Pangkalan Data ialah rangka kerja ORM Python generasi baharu Ia mempunyai banyak ciri yang sangat baik, seperti pengoptimuman kod ringkas, operasi komunikasi tak segerak, kumpulan sambungan, dsb., yang boleh meningkatkan kecekapan pembangunan pembangun dan menggalakkan prestasi cemerlangnya. Walaupun perpustakaan Pangkalan Data masih agak baru dalam dunia pembangunan Python, ia semakin mendapat perhatian dan pengiktirafan daripada komuniti. Kami percaya bahawa perpustakaan ini akan memainkan peranan yang semakin penting dalam kerja masa depan pembangun Python.

Atas ialah kandungan terperinci Penjelasan terperinci tentang Pangkalan Data rangka kerja ORM 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