近年、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)
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;
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)
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)
データベース フレームワークは、Python 開発者向けの柔軟で使いやすい、軽量の ORM フレームワークです。さまざまなデータベースを簡単にサポートし、開発者がデータの保存、操作、フィルター、並べ替えなどを容易に行うことができます。この記事では、データベースへの接続からモデル操作の定義、データ挿入やクエリ操作に至るまで、データベース フレームワークの柔軟性と使いやすさを示し、開発者が Python プログラムをより効率的に開発しやすくします。
以上がORM フレームワーク Python でのデータベースの実際の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。