ホームページ >バックエンド開発 >Python チュートリアル >ORM フレームワーク Python でのデータベースの実際
近年、Python は効率的で使いやすく柔軟なプログラミング言語となり、Python 開発の分野ではデータベース ORM フレームワークの適用がますます一般的になってきています。 Databases は、MySQL、PostgreSQL、SQLite、Microsoft SQL Server などのさまざまなデータベースをサポートする、シンプルで直感的な軽量の ORM フレームワークです。この記事では、データベース フレームワークと、Python 開発におけるその具体的なアプリケーションについて詳しく紹介します。
1. ORM フレームワークの概念
ORM はオブジェクト リレーショナル マッピングの略で、リレーショナル データベース テーブルと Python オブジェクトの間のマッピングであり、これにより開発者は SQL ステートメントを操作するテクノロジが不要になります。 Python で ORM フレームワークを適用すると、開発者により多くの選択肢が提供され、プログラム開発がより便利になります。
2. Databases フレームワーク
Databases は、Django ORM 開発者の Andrew Goodwin が開発したシンプルな ORM フレームワークで、最大の特徴は軽量で便利で使いやすいことです。 MySQL、PostgreSQL、SQLite、Microsoft SQL Server などのデータベース。
データベース フレームワークのインストールには、pip を使用してインストールできます。コマンドは次のとおりです:
pip install databases==0.4.*
データベース フレームワークを開発に使用する前に、まずデータベースに接続する必要があります。データベースへの接続に必要なパラメータには、データベースの種類、ホスト名、データベース名、ユーザー名、パスワードなどが含まれます。この開発では、MySQL データベースに接続しようとします。コードは次のとおりです:
import databases DATABASE_URL = "mysql://user:password@hostname/database_name" database = databases.Database(DATABASE_URL)
ここで、QAQsaaspassword はデータベースに接続するためのパスワード、askdnsadn312as はデータベースに接続するためのユーザー名、localhost です。はデータベースが配置されているホスト名または IP アドレスです。 、my_database はデータベースの名前です。
データベース フレームワークは、複雑なクエリ ステートメントを作成する SQL 式言語をサポートしているため、開発者は SQL 実行プロセスをより柔軟に制御できます。データベース フレームワークでは、Table クラスを使用してテーブルを作成し、Column クラスを使用して列を作成できます。
テーブル作成コードは次のとおりです:
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), )
ここでは、SQLAlchemy の MetaData オブジェクトを使用し、users テーブルを定義して 4 つのフィールド (id、ユーザー名、パスワード、電子メール) を作成します。
データベース フレームワークには、操作に SQL ステートメントを直接使用する、より柔軟な方法も用意されています。 SQL ステートメントは、execute() メソッドを通じて実行できます。コードは次のとおりです:
result = await database.execute(query)
query は SQL ステートメントのコードを表し、result は実行結果です。実行が成功すると、辞書が返されます。 type リストで構成され、各辞書は SQL クエリ結果のレコードを表します。
5. データベースでの ORM の使用
データベース フレームワークは、SQL ステートメントを操作するための ORM もサポートしているため、開発者にとってはより便利です。 ORM メソッドは、オブジェクトの関係をデータベースにマップするのに役立ち、コードをより読みやすく、保守しやすくします。
ORM を使用すると、モデルを定義してデータベースを操作できます。コードは次のとおりです:
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)
ここでは、データ テーブル オブジェクトを表す UserModel モデル クラスを定義します。簡単な定義を通じて、SQLAlchemy のテーブルと列の定義を完了することができ、その ORM をデータベースにマッピングできるため、便利で高速で保守が容易です。
3. アプリケーションの例
ここでは、データベース フレームワークの具体的な操作を示すために、単純なブログ アプリケーションを例に挙げます。
1. データベースへの接続
次のコードに示すように、データベースへの接続に必要な情報も非常に単純です:
import databases DATABASE_URL = "mysql://user:password@hostname/database_name" database = databases.Database(DATABASE_URL)
ここでの DATABASE_URL は、 MySQL への接続。データベース システムに接続するためのパラメータ。
2. モデルを定義する
このブログの例では、2 つのデータ モデルを定義する必要があります。1 つは、ブログ投稿オブジェクトを表すブログ モデルです。生成されるコードは次のとおりです。
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)
もう 1 つは、ユーザー オブジェクトを表す User モデルです。生成されたコードは次のとおりです:
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)## 同様に、単純な定義を使用して、その ORM を MySQL データベースにマッピングします。に接続します。 3. テーブルの作成運用しているデータベース システムは MySQL なので、対応するテーブルを作成する必要があります。生成されるコードは次のとおりです:
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.データの挿入ORM を使用すると、非常に便利にデータを入力できます。生成されたコードは次のとおりです:
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)ここでは、insert() メソッドを使用してデータ挿入操作を完了します。読み取り可能。開発者がコードをより適切に保守できるようにするため。 5. クエリ データ次のコードに示すように、データベース フレームワークはクエリ操作もサポートしています:
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)ここでは、select() メソッドを使用して条件を結合します。トラバース時に多数のペアを返す生成された A デバイスを取得します。クエリ データを使用してデータをフィルタリングおよび並べ替えることもできます。 要約
データベース フレームワークは、Python 開発者向けの柔軟で使いやすい、軽量の ORM フレームワークです。さまざまなデータベースを簡単にサポートし、開発者がデータの保存、操作、フィルター、並べ替えなどを容易に行うことができます。この記事では、データベースへの接続からモデル操作の定義、データ挿入やクエリ操作に至るまで、データベース フレームワークの柔軟性と使いやすさを示し、開発者が Python プログラムをより効率的に開発しやすくします。
以上がORM フレームワーク Python でのデータベースの実際の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。