0Pricing
Learn Rust Coding · Ders

Veritabanına Bağlanma

sqlx havuzları

Veritabanına Bağlanma, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

sqlx nedir?

sqlx, eşzamansız ve saf Rust ile yazılmış bir SQL araç setidir. ORM değildir; gerçek SQL yazarsınız, ancak derleme zamanında denetim ve tür güvenli sonuçlar elde edersiniz.

  • Postgres, MySQL ve SQLite'ı destekler
  • Tokio gibi eşzamansız çalışma zamanları üzerine kuruludur

sqlx ekleme

sqlx'i, ihtiyaç duyduğunuz çalışma zamanı ve veritabanı özellikleriyle tanımlayın. Bu işlem Cargo.toml dosyasını düzenler ve terminalinizde çalışır.

[dependencies]
sqlx = { version = "0.7", features = ["runtime-tokio", "postgres"] }
tokio = { version = "1", features = ["full"] }

Bağlantı dizeleri

Bir bağlantı dizesi (DSN), sqlx'e veritabanına nasıl ulaşacağını söyler.

  • Postgres: postgres://user:pass@host:5432/dbname
  • SQLite: sqlite://app.db

Bağlantı havuzu neden kullanılır?

Her sorgu için bağlantı açmak yavaştır. Bir havuz, yeniden kullanılabilir bağlantıları tutar, ihtiyaç oldukça dağıtır ve ardından geri alır.

  • Eşzamanlılığı sınırlar
  • Bağlantı maliyetini paylaştırır

Havuz oluşturma

Bir havuzu yapılandırmak ve bağlanmak için PgPoolOptions kullanın. Bu işlem genellikle başlangıçta bir kez yapılır.

use sqlx::postgres::PgPoolOptions;

async fn connect() -> sqlx::Pool<sqlx::Postgres> {
    PgPoolOptions::new()
        .max_connections(5)
        .connect("postgres://user:pass@localhost/app")
        .await
        .unwrap()
}

Havuzu yapılandırma

İş yükünüze uyacak şekilde havuzu, en fazla bağlantı sayısı ve edinme zaman aşımı gibi seçeneklerle ayarlayın.

use sqlx::postgres::PgPoolOptions;
use std::time::Duration;

fn options() -> PgPoolOptions {
    PgPoolOptions::new()
        .max_connections(10)
        .acquire_timeout(Duration::from_secs(3))
}

Havuz üzerinden basit bir sorgu

Sorguyu çalıştırmak için havuzu (veya ona bir başvuruyu) yürütücü olarak geçirin. Havuz bir bağlantıyı otomatik olarak ödünç alır.

use sqlx::Pool;
use sqlx::Postgres;

async fn ping(pool: &Pool<Postgres>) -> i32 {
    let row: (i32,) = sqlx::query_as("SELECT 1")
        .fetch_one(pool)
        .await
        .unwrap();
    row.0
}

Havuzu yalın Rust ile modelleme

Bir havuz, kavramsal olarak sınırlandırılmış bir yeniden kullanılabilir kaynak koleksiyonudur. Bu çalıştırılabilir örnek, ödünç alma ve geri verme işlemlerini ana hatlarıyla gösterir.

struct Pool { available: u32, max: u32 }

impl Pool {
    fn acquire(&mut self) -> bool {
        if self.available > 0 { self.available -= 1; true } else { false }
    }
    fn release(&mut self) { self.available += 1; }
}

fn main() {
    let mut p = Pool { available: 2, max: 2 };
    println!("{}", p.acquire());
    println!("{}", p.acquire());
    println!("{}", p.acquire());
    p.release();
    println!("{}", p.acquire());
}

DSN'yi ortamdan okuma

Gizli bilgileri kaynak kodundan uzak tutun. DATABASE_URL'yi başlangıçta ortamdan okuyun.

use sqlx::postgres::PgPoolOptions;

async fn connect() -> sqlx::Pool<sqlx::Postgres> {
    let url = std::env::var("DATABASE_URL").unwrap();
    PgPoolOptions::new().connect(&url).await.unwrap()
}

Klonlama düşük maliyetlidir

Bir Pool, dahili olarak başvuru sayımı kullanır. Klonlamak, aynı temel bağlantıların paylaşılması anlamına gelir; bu nedenle klonları görevlere serbestçe geçirebilirsiniz.

use sqlx::{Pool, Postgres};

async fn spawn_work(pool: Pool<Postgres>) {
    let p2 = pool.clone();
    tokio::spawn(async move {
        let _ = sqlx::query("SELECT 1").execute(&p2).await;
    });
}

Havuzu kapatma

Kapatma sırasında tüm bağlantıları düzgün biçimde boşaltıp kapatmak için close().await çağrısını yapın.

use sqlx::{Pool, Postgres};

async fn shutdown(pool: Pool<Postgres>) {
    pool.close().await;
}

Hızlı Kontrol

sqlx ile bağlantı kurma konusundaki anlayışınızı sınayın.

Özet

sqlx ile bağlantı kurmayı öğrendiniz:

  • sqlx, ORM olmayan, eşzamansız ve tür güvenli bir SQL araç setidir
  • DSN, veritabanının konumunu belirtir
  • Sınırları ve zaman aşımları olan bir havuz oluşturmak için PgPoolOptions kullanın
  • Havuzları klonlamak düşük maliyetlidir ve kapatma sırasında kapatılmalıdır

Sırada: derleme zamanında denetlenen sorgular.

Sıkça Sorulan Sorular

“Veritabanına Bağlanma” dersi ücretsiz mi?

Evet — “Veritabanına Bağlanma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Veritabanına Bağlanma” dersinde ne öğreneceğim?

sqlx havuzları Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Veritabanına Bağlanma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Veritabanına Bağlanma
  2. Derleme Zamanında Denetlenen Sorgular
  3. CRUD İşlemleri
  4. Geçişler
← Learn Rust Coding Sayfasına Dön