PyCon Sweden 2025

Extending SQL Databases with Python
2025-10-30 , Auditorium

What if your database could run Python code inside SQL? In this talk, we’ll explore how to extend popular databases using Python, without needing to write a line of C.

We’ll cover three systems—SQLite, DuckDB, and PostgreSQL—and show how Python can be used in each to build custom SQL functions, accelerate data workflows, and prototype analytical logic. Each database offers a unique integration path:
- SQLite and DuckDB allow you to register Python functions directly into SQL via sqlite3.create_function, making it easy to inject business logic or custom transformations.
- PostgreSQL offers PL/Python, a full-featured procedural language for writing SQL functions in Python. We’ll also touch on advanced use cases, including embedding the Python interpreter directly into a PostgreSQL extension for deeper integration.

By the end of this talk, you’ll understand the capabilities, limitations, and gotchas of Python-powered extensions in each system—and how to choose the right tool depending on your use case, whether you’re analyzing data, building pipelines, or hacking on your own database.


  1. Introduction (3 min)
    • Who this talk is for: devs, data engineers, extension hackers
    • Motivation: why embed Python in databases?
    • Overview of the 3 systems (SQLite, DuckDB, PostgreSQL)

  2. SQLite & DuckDB: Python Functions via sqlite3.create_function (7 min)
    • How sqlite3.create_function() works in SQLite
    • Example: creating a simple text-processing SQL function in Python
    • Use cases: rapid prototyping, lightweight data pipelines

  3. PostgreSQL with PL/Python (6 min)
    • Enabling and using the PL/Python extension
    • Writing SQL functions in Python
    • Pros and limitations (e.g., sandboxing, permissions, virtualenvs)

  4. Advanced: Embedding Python into PostgreSQL Extensions (7 min)
    • Writing PostgreSQL extensions in C that embed Python
    • Use cases: integrating ML models, custom procedural logic
    • Short demo or diagram: C + Python working inside Postgres

  5. Trade-offs and Comparison (3 min)
    • Performance, deployment, complexity, ecosystem
    • When to use which approach

  6. Q&A (4 min)
    • Invite questions and deeper discussion from the audience

Florents (Flo) Tselai is a data generalist and open-source developer with deep expertise in database internals and extension development. He is a core PostgreSQL contributor and the author of multiple database extensions. His work spans AI, data management, web scraping, and civic tech. He is also the creator of diofanti.org, a public platform for tracking government spending in Greece.
github.com/Florents-Tselai