Logo

dev-resources.site

for different kinds of informations.

Diesel vs SQLx in Raw and ORM Modes

Published at
1/12/2025
Categories
rust
postgres
database
axum
Author
yellow_coder
Categories
4 categories in total
rust
open
postgres
open
database
open
axum
open
Author
12 person written this
yellow_coder
open
Diesel vs SQLx in Raw and ORM Modes

Diesel vs SQLx in Raw and ORM Modes

Rust developers often face a choice between Diesel and SQLx for database interactions. Diesel is a full-featured ORM (Object-Relational Mapper), while SQLx is a compile-time checked, async-friendly query library. Here's a quick comparison of their performance and usage in raw and ORM modes.


Performance Comparison

Mode Diesel SQLx
Pure ORM Mode Slightly faster due to optimizations. Slower compared to Diesel in ORM-like use.
Query Builder ~50% slower than SQLx in raw queries. Faster, especially for raw SQL execution.

Code Examples

Diesel in ORM Mode

Using Diesel's schema and ORM for managing database queries.

use diesel::prelude::*;
use diesel::pg::PgConnection;
use crate::schema::users;

#[derive(Queryable, Insertable)]
#[table_name = "users"]
struct User {
    id: i32,
    name: String,
}

fn fetch_users(conn: &PgConnection) -> Vec<User> {
    use crate::schema::users::dsl::*;
    users.load::<User>(conn).expect("Error loading users")
}
Enter fullscreen mode Exit fullscreen mode
Diesel in Raw Query Mode

Bypassing Diesel's query builder for raw SQL queries.

use diesel::sql_query;
use diesel::pg::PgConnection;
use diesel::RunQueryDsl;

fn fetch_users_raw(conn: &PgConnection) {
    let query = "SELECT id, name FROM users;";
    let results = sql_query(query).load::<(i32, String)>(conn).expect("Query failed");
    println!("{:?}", results);
}
Enter fullscreen mode Exit fullscreen mode
SQLx in Raw Mode

Direct SQL execution using SQLx's async API.

use sqlx::{PgPool, Row};

async fn fetch_users(pool: &PgPool) {
    let rows = sqlx::query("SELECT id, name FROM users;")
        .fetch_all(pool)
        .await
        .expect("Query failed");

    for row in rows {
        let id: i32 = row.get("id");
        let name: String = row.get("name");
        println!("{} - {}", id, name);
    }
}
Enter fullscreen mode Exit fullscreen mode
SQLx in ORM-Like Mode

Using SQLx structs to map query results.

use sqlx::FromRow;

#[derive(FromRow)]
struct User {
    id: i32,
    name: String,
}

async fn fetch_users(pool: &PgPool) {
    let users: Vec<User> = sqlx::query_as!(User, "SELECT id, name FROM users;")
        .fetch_all(pool)
        .await
        .expect("Query failed");
    println!("{:?}", users);
}
Enter fullscreen mode Exit fullscreen mode

Key Takeaways

  • Diesel excels in ORM mode for its type safety and compile-time guarantees but slows down with its query builder.
  • SQLx is faster for raw queries and supports async natively, making it ideal for modern web applications.

For a high-performance, async-friendly environment, SQLx in raw mode is a solid choice. However, if compile-time safety and ease of schema management matter more, Diesel ORM is unbeatable.

database Article's
30 articles in total
Favicon
Why Successful Companies Don't Have DBAs
Favicon
How Supabase Made Me Rethink App Development (And Honestly, I’m Obsessed)
Favicon
Developing a project using Java Spring Framework, JSON, JPA and PostgreSQL
Favicon
Query Data with DynamoDB
Favicon
Let's take a quick look at Drizzle ORM
Favicon
Simplify Python-Informix Connections with wbjdbc
Favicon
Building an Intelligent SQL Query Assistant with Neon, .NET, Azure Functions, and Azure OpenAI service
Favicon
TypeScript Discord Bot Handler
Favicon
How to Fix the “Record to Delete Does Not Exist” Error in Prisma
Favicon
Extract structured data using Python's advanced techniques
Favicon
Key Component of a Manufacturing Data Lakehouse
Favicon
Enabling Database Backup and Restore to S3 for SQL Server in AWS RDS: A Step-by-Step Guide
Favicon
Firebase Alternatives to Consider in 2025
Favicon
Building the Foundations: A Beginner’s Guide to HTML
Favicon
Why top AI architects are DITCHING relationalDBs for knowledge graphs
Favicon
Intelligent PDF Data Extraction and database creation
Favicon
What you should know about CIDR in clear terms
Favicon
Data Privacy Challenges in Cloud Environments
Favicon
open source multi tenant cloud database
Favicon
Diesel vs SQLx in Raw and ORM Modes
Favicon
Identifying and Resolving Blocking Sessions in Oracle Database
Favicon
Show query window at startup in SQL Server Management Studio
Favicon
How to Set Custom Status Bar Colors in SSMS to Differentiate Environments
Favicon
JOOQ Is Not a Replacement for Hibernate. They Solve Different Problems
Favicon
Top 20 Unique Database Project Ideas For Students
Favicon
Day 13 of My Android Adventure: Crafting a Custom WishList App with Sir Denis Panjuta
Favicon
TimescaleDB in 2024: Making Postgres Faster
Favicon
Auditing SQL Server Database Users, Logins, and Activity: A Comprehensive Guide
Favicon
Primeiros Passos no PostgreSQL: Um Guia Completo para Iniciantes
Favicon
Find logged Microsoft SQL Server Messages

Featured ones: