GraphQL to PostgreSQL.
No middleman.

Transform GraphQL queries into optimized PostgreSQL. One query. No N+1. Pure speed.

GraphQL Query
{
  users {
    id
    name
    posts {
      title
      comments {
        text
      }
    }
  }
}
PostgreSQL Query
SELECT jsonb_agg(
  jsonb_build_object(
    'id', u.id,
    'name', u.name,
    'posts', u.posts
  )
) FROM users u

Why FraiseQL?

🚀 No ORM Overhead

Direct GraphQL to SQL translation. No abstraction layers, no performance penalties.

🎯 JSONB Powered

Leverage PostgreSQL's JSONB for nested data in a single query.

⚡ Real-time Ready

Built-in WebSocket subscriptions with PostgreSQL LISTEN/NOTIFY.

🔧 Simple Setup

pip install, add decorators, run. No configuration files needed.

Quick Start

1

Install

pip install fraiseql
2

Define Schema

import fraiseql

@fraiseql.type
class User:
    id: int
    name: str
    email: str

@fraiseql.query
async def users(info) -> list[User]:
    return await info.context.repo.fetch_users()
3

Run

from fraiseql.fastapi import create_app

app = create_app(
    database_url="postgresql://localhost/mydb"
)

Performance That Matters

Scenario Traditional ORM FraiseQL Improvement
Nested data (3 levels) ~50 queries 1 query 50x fewer
Response time (1000 users) ~800ms ~45ms 17x faster
Memory usage ~120MB ~25MB 5x less

When NOT to Use FraiseQL

We believe in honest engineering. FraiseQL isn't for everyone:

If these are deal-breakers, check out Hasura or PostGraphile.