Rumah >pembangunan bahagian belakang >Tutorial Python >Pangkalan data rangka kerja ORM dalam Python dalam amalan
Dalam beberapa tahun kebelakangan ini, Python telah menjadi bahasa pengaturcaraan yang cekap, mudah digunakan dan fleksibel, dan dalam bidang pembangunan Python, aplikasi rangka kerja ORM Pangkalan Data menjadi semakin biasa. Pangkalan data ialah rangka kerja ORM yang ringkas, intuitif, ringan yang menyokong pelbagai pangkalan data, termasuk tetapi tidak terhad kepada MySQL, PostgreSQL, SQLite dan Microsoft SQL Server. Artikel ini akan memperkenalkan anda kepada rangka kerja Pangkalan Data secara terperinci dan aplikasi khususnya dalam pembangunan Python.
1. Konsep rangka kerja ORM
ORM adalah singkatan kepada Object Relational Mapping, iaitu pemetaan antara jadual pangkalan data relasi dan objek Python, dengan itu membolehkan pembangun untuk Teknologi operasi pernyataan SQL adalah tidak lebih lama diperlukan dalam proses pengaturcaraan Aplikasi rangka kerja ORM dalam Python menyediakan pembangun dengan lebih banyak pilihan dan menjadikan pembangunan program lebih mudah.
2. Rangka kerja pangkalan data
Pangkalan data ialah rangka kerja ORM ringkas yang dibangunkan oleh pembangun Django ORM, Andrew Goodwin pangkalan data, termasuk MySQL, PostgreSQL, SQLite dan Microsoft SQL Server.
Untuk pemasangan rangka kerja Pangkalan Data, anda boleh menggunakan pip untuk memasangnya Perintahnya adalah seperti berikut:
pip install databases==0.4.*
Sebelum menggunakan rangka kerja Pangkalan Data untuk pembangunan, anda perlu menyambung ke pangkalan data terlebih dahulu. Parameter yang diperlukan untuk menyambung ke pangkalan data termasuk jenis pangkalan data, nama hos, nama pangkalan data, nama pengguna dan kata laluan, dsb. Dalam perkembangan ini, kami cuba menyambung ke pangkalan data MySQL Kodnya adalah seperti berikut:
import databases DATABASE_URL = "mysql://user:password@hostname/database_name" database = databases.Database(DATABASE_URL)
Di sini, QAQsaaspassword ialah kata laluan untuk menyambung ke pangkalan data, askdnsadn312as ialah nama pengguna untuk menyambung ke pangkalan data, dan localhost. ialah nama hos atau alamat IP di mana pangkalan data terletak , my_database ialah nama pangkalan data.
Rangka kerja Pangkalan Data menyokong bahasa ungkapan SQL untuk mencipta pernyataan pertanyaan yang kompleks, membolehkan pembangun mengawal proses pelaksanaan SQL dengan lebih fleksibel. Dalam rangka kerja Pangkalan Data, kita boleh menggunakan kelas Jadual untuk mencipta jadual dan kelas Lajur untuk membuat lajur.
Kod penciptaan jadual adalah seperti berikut:
import sqlalchemy metadata = sqlalchemy.MetaData() users = sqlalchemy.Table( "users", metadata, sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True), sqlalchemy.Column("username", sqlalchemy.String), sqlalchemy.Column("password", sqlalchemy.String), sqlalchemy.Column("email", sqlalchemy.String), )
Di sini, kami menggunakan objek MetaData dalam SQLAlchemy untuk mencipta empat medan (id, nama pengguna, kata laluan dan e-mel) dengan mentakrifkan jadual pengguna.
Rangka kerja Pangkalan Data juga menyediakan kaedah untuk beroperasi secara langsung menggunakan pernyataan SQL, yang lebih fleksibel. Pelaksanaan pernyataan SQL boleh dicapai melalui kaedah execute() Kodnya adalah seperti berikut:
result = await database.execute(query)
di mana pertanyaan mewakili kod pernyataan SQL, dan hasilnya ialah hasil pelaksanaan akan mengembalikan jenis dict Terdiri daripada senarai, setiap dict mewakili rekod dalam hasil pertanyaan SQL.
5. Gunakan ORM dalam Pangkalan Data
Rangka kerja Pangkalan Data juga menyokong ORM untuk mengendalikan pernyataan SQL, yang lebih mudah untuk pembangun. Kaedah ORM membantu memetakan hubungan objek ke pangkalan data, menjadikan kod lebih mudah dibaca dan diselenggara.
Menggunakan ORM, kami boleh mengendalikan pangkalan data dengan mentakrifkan model Kodnya adalah seperti berikut:
import sqlalchemy metadata = sqlalchemy.MetaData() users = sqlalchemy.Table( "users", metadata, sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True), sqlalchemy.Column("username", sqlalchemy.String), sqlalchemy.Column("password", sqlalchemy.String), sqlalchemy.Column("email", sqlalchemy.String), ) class UserModel: id: int username: str password: str email: str __tablename__ = "users" query: sq.Select def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value)
Di sini, kami mentakrifkan kelas model UserModel untuk mewakili objek jadual data kami , kita boleh melengkapkan definisi jadual dan lajur dalam SQLAlchemy, supaya ORMnya boleh dipetakan ke pangkalan data, yang mudah, cepat dan mudah diselenggara.
3. Contoh Aplikasi
Di sini, kami mengambil aplikasi blog ringkas sebagai contoh untuk menunjukkan operasi khusus rangka kerja Pangkalan Data.
1 Sambung ke pangkalan data
Maklumat yang diperlukan untuk sambungan pangkalan data juga sangat mudah, seperti yang ditunjukkan dalam kod berikut:
import databases DATABASE_URL = "mysql://user:password@hostname/database_name" database = databases.Database(DATABASE_URL)
DATABASE_URL di sini menentukan setiap pautan ke sambung ke parameter MySQL untuk menyambung ke sistem pangkalan data kami.
2. Tentukan model
Dalam contoh blog ini, kita perlu mentakrifkan dua model data Satu ialah model Blog, yang mewakili objek catatan blog adalah seperti berikut:
class Blog: id: int title: str description: str content: str __tablename__ = "blog" query: sq.Select def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value)
Yang lain ialah model Pengguna, yang mewakili objek pengguna Kod yang dijana adalah seperti berikut:
class User: id: int name: str email: str password: str __tablename__ = "user" query: sq.Select def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value)
Begitu juga, kami memetakan ORMnya ke pangkalan data MySQL yang kami sambungkan melalui mudah. takrifan.
3. Cipta jadual
Memandangkan sistem pangkalan data yang kami kendalikan ialah MySQL, kami perlu mencipta jadual yang sepadan adalah seperti berikut:
CREATE TABLE `blog` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `description` varchar(100) DEFAULT NULL, `content` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) DEFAULT NULL, `email` varchar(100) DEFAULT NULL, `password` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4. Masukkan data
Kami boleh menggunakan ORM untuk memasukkan data dengan sangat mudah Kod yang dijana adalah seperti berikut:
async def create_blog_post(title: str, description: str, content: str): query = blog.insert().values(title=title, description=description, content=content) return await database.execute(query) async def create_user(name: str, email: str, password: str): query = user.insert().values(name=name, email=email, password=password) return await database.execute(query)
Di sini kami menggunakan kaedah insert() untuk melengkapkan operasi memasukkan data, yang sangat penting. boleh dibaca. , untuk memudahkan pembangun mengekalkan kod dengan lebih baik.
5. Data pertanyaan
Rangka kerja Pangkalan Data juga menyokong operasi pertanyaan, seperti yang ditunjukkan dalam kod berikut:
async def get_blog_post(id: int): query = blog.select().where(blog.c.id == id) return await database.fetch_one(query) async def get_all_users(): query = user.select() return await database.fetch_all(query) async def get_users_by_email(email: str): query = user.select().where(user.c.email == email) return await database.fetch_all(query)
Di sini kami menggunakan kaedah pilih() untuk menyambung syarat untuk mendapatkan peranti terjana yang mengembalikan beberapa pasangan semasa melintasi. Kami juga boleh menapis dan mengisih data dengan menggunakan data pertanyaan.
Ringkasan
Rangka kerja Pangkalan Data ialah rangka kerja ORM yang fleksibel, mudah digunakan dan ringan untuk pembangun Python Ia boleh menyokong pelbagai pangkalan data dengan mudah dan memudahkan pembangun menyimpan, mengendalikan, menapis dan mengisih data, dsb. Artikel ini menunjukkan fleksibiliti dan kemudahan penggunaan rangka kerja Pangkalan Data, daripada menyambung kepada pangkalan data kepada mentakrifkan operasi model, kepada pemasukan data dan operasi pertanyaan, menjadikannya lebih mudah untuk pembangun membangunkan program Python dengan lebih cekap.
Atas ialah kandungan terperinci Pangkalan data rangka kerja ORM dalam Python dalam amalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!