
In the real world, data doesn’t just live in CSV files. It lives in SQL databases. If you’re looking for a simple way to use Polars read database functionality, you’re in luck. Polars has a high-performance read_database function that can load data directly from a query into a DataFrame.
Step 1: Installation
Polars needs a “connector” to talk to your database. You can use the standard sqlalchemy or a newer adbc driver. Let’s use sqlalchemy as it’s more common.
pip install polars sqlalchemy # You also need the driver for your specific DB: # pip install psycopg2-binary # For PostgreSQL # pip install 'PyMySQL[mysqlclient-binary]' # For MySQL
For this example, we’ll use sqlite3 (built-in) to create a dummy database first.
Step 2: Create a Dummy Database
Let’s make a file-based database so you can run this code.
import sqlite3
# Create a dummy DB
con = sqlite3.connect("my_data.db")
con.execute("DROP TABLE IF EXISTS users")
con.execute("CREATE TABLE users (id INT, name TEXT, age INT)")
con.execute("INSERT INTO users VALUES (1, 'Alice', 30), (2, 'Bob', 45)")
con.commit()
con.close()Step 3: Read the Database with Polars
Polars needs a connection string (a URL) to find the database, and a query.
import polars as pl # 1. Define the connection string # For SQLite, it's just 'sqlite:///' + filename conn_str = "sqlite:///my_data.db" # 2. Define your query query = "SELECT name, age FROM users WHERE age > 40" # 3. Read the database! df = pl.read_database(query, conn_str) print(df)
Output:
shape: (1, 2) ┌──────┬─────┐ │ name ┆ age │ │ --- ┆ --- │ │ str ┆ i64 │ ╞══════╪═════╡ │ Bob ┆ 45 │ └──────┴─────┘
This is significantly faster than pandas.read_sql and is the modern way to build data pipelines directly from your production database.





