Skip to main content

Type Hint SQL Query Builder for Python.

Project description

型安全な SQL クエリビルダー

DDL

サポートしない。DMLのみを対象にする。

DDL は構文がデータベースごとに異なることが多く、使用頻度も少ない。 別のマイグレーションツールで管理することを推奨する。

関連テーブルについて

PrimaryKey や結合キーが制約として含まれている場合、 NewType で表現することで条件の一致を行わせる。

実例

from textwrap import dedent

from tipsql.core.query.builder import QueryBuilder

from your_project.database.public import User, Address


builder = (
    query.chain()
    .from_(
        lambda c: c(User)
        .left_outer_join(
            Address,
        )
        .on(
            lambda c: c(User.id == Address.user_id)
            .and_(Address.city == "Tokyo")
        )
    )
    .select(
        User.id,
        User.name,
    )
)

assert (
    builder.build()
    == dedent(
        """
        SELECT
            users.id,
            users.name
        FROM
            users
            LEFT OUTER JOIN
                addresses
            ON
                users.id = addresses.user_id
                AND addresses.city = 'Tokyo';
        """
    ).strip()
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tipsql-0.0.9.tar.gz (2.1 kB view hashes)

Uploaded Source

Built Distribution

tipsql-0.0.9-py3-none-any.whl (1.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page