{"library":"pypika-tortoise","title":"PyPika for Tortoise-ORM","description":"pypika-tortoise is an extension of the PyPika SQL query builder library, specifically designed to integrate seamlessly with Tortoise-ORM. It enables users to construct complex SQL queries using a Pythonic API directly from Tortoise-ORM models, leveraging PyPika's powerful query generation capabilities while ensuring compatibility with Tortoise-ORM's database interactions. The current version is 0.6.5, with its development closely tied to updates in `pypika` and `tortoise-orm`.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install pypika-tortoise"],"cli":null},"imports":["from pypika_tortoise import Query","from pypika_tortoise import Table","from pypika_tortoise import Field","from pypika_tortoise import functions as fn"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from tortoise import fields, models\nfrom pypika_tortoise import Query, Table, functions as fn\n\n# Define a Tortoise-ORM Model\nclass Product(models.Model):\n    id = fields.IntField(pk=True)\n    name = fields.CharField(max_length=255)\n    price = fields.DecimalField(max_digits=10, decimal_places=2)\n    in_stock = fields.BooleanField(default=True)\n\n    class Meta:\n        table = \"products\" # Ensure the table name is set\n\n# Create a Table object from the Tortoise-ORM Model\nproducts_table = Table(Product)\n\n# Build a query using pypika-tortoise, referencing model fields\nquery = Query.from_(products_table).select(\n    products_table.id,\n    products_table.name,\n    products_table.price\n).where(\n    products_table.in_stock == True\n).orderby(\n    products_table.name\n).limit(10)\n\n# Generate the SQL string (does not execute against a DB)\nsql_query = query.get_sql()\nprint(f\"Generated SELECT SQL:\\n{sql_query}\")\n\n# Example with aggregation using pypika_tortoise functions\nquery_agg = Query.from_(products_table).select(\n    fn.Count(products_table.id).as_('total_products'),\n    fn.Sum(products_table.price).as_('total_price_in_stock')\n).where(\n    products_table.in_stock == True\n)\n\nsql_agg_query = query_agg.get_sql()\nprint(f\"\\nGenerated AGGREGATION SQL:\\n{sql_agg_query}\")","lang":"python","description":"This quickstart demonstrates how to define a Tortoise-ORM model and then use `pypika-tortoise` to construct SQL queries. It shows how to initialize `Table` directly from a model and build a `SELECT` query with filtering, ordering, and limiting. An example with aggregation functions is also included, showcasing how `pypika-tortoise` can generate complex SQL without needing an active database connection.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"0.6.5","pypi_latest":"0.6.5","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":0.07,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":2.9,"disk_size":"18.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.04,"mem_mb":2.9,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.11,"mem_mb":3.1,"disk_size":"20.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":0.09,"mem_mb":3.1,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.9,"disk_size":"12.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.08,"mem_mb":2.9,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":2.9,"disk_size":"11.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.07,"mem_mb":2.7,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":3,"disk_size":"17.7M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pypika-tortoise","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.8,"import_time_s":0.06,"mem_mb":3,"disk_size":"18M"}]}}