I database SQL archiviano raccolte di dati in righe e colonne. È possibile recuperare e aggiornare i dati in un sistema di gestione di database relazionali (RDBMS) utilizzando il linguaggio SQL. Tra i numerosi database SQL disponibili, i più popolari sono MySQL, PostgreSQL, Microsoft SQL Server e SQLite.
La funzionalità per interagire con i database in Go è nel pacchetto database/sql, parte della libreria standard.
Il pacchetto database/sql interagisce con i database SQL utilizzando i driver. Puoi importare un pacchetto di driver appropriato per il tuo RDBMS e usarlo per interagire con il database.
Introduzione ai database SQL in Go
Il pacchetto database/sql è un'interfaccia generica per i database relazionali. Per lavorare con un server di database specifico, dovrai utilizzare uno dei tanti driver disponibili.
Per fortuna, non devi preoccuparti di implementazioni specifiche oltre al driver. Il pacchetto database/sql gestisce le operazioni del database indipendentemente dal server a cui ti stai connettendo.
Alcuni dei driver di database Go più popolari sono:
- Driver Go-SQL (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- DB MSSQL (Microsoft SQL Server)
Puoi usare il Elenco dei driver LibHunt per trovare equivalenti per altri tipi di database. L'elenco mostra anche la popolarità relativa di ciascun sistema di database:
Installazione e importazione dei driver del database Go
Dopo aver creato un'area di lavoro Go e aver inizializzato un file di moduli Go, installa il driver che corrisponde al tuo sistema di database. Ad esempio, esegui uno dei seguenti comandi nella directory dell'area di lavoro per installare il driver MySQL o SQLite:
vai a prendere -u github.com/go-sql-driver/mysql
vai a ottenere github.com/mattn/go-sqlite3
Dopo aver installato il driver, importalo per gli effetti collaterali anteponendo un trattino di sottolineatura prima del pacchetto. Ad esempio, per importare il driver MySQL insieme al pacchetto database/sql:
importare (
"database/sql"
_ "github.com/andare-driver-sql/mysql"
)
Importando il pacchetto del driver per gli effetti collaterali, puoi usarlo per connetterti ed eseguire operazioni sul database.
Connessione a un database SQL con Go
Dopo aver importato i driver del database, è possibile creare una connessione al database utilizzando il file Aprire metodo del database/ql pacchetto. Questo metodo prende il nome del driver e il percorso del database (per SQLite) o una stringa di connessione (per MySQL). Ad esempio, utilizzare uno dei seguenti:
db, err := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, err := sql. Open("mysql", "utente: password@/nomedb") // MySQL
Dopo aver tentato di aprire la connessione, ricordati di verificare la presenza di un errore:
Se ehm!= zero {
tronco d'albero. Fatalln (err)
}
A seconda del sistema di database, il Aprire il metodo potrebbe restituire un errore se il database non esiste. Dopo esserti connesso a un database, puoi eseguire query e preparare istruzioni utilizzando l'istanza del database that Aprire ritorna.
Esecuzione di comandi SQL
Puoi eseguire comandi SQL usando il Preparare metodo dell'istanza del database. Il Preparare accetta un comando SQL e restituisce un'istruzione preparata per l'esecuzione insieme a un oggetto di errore. Ad esempio, se vuoi creare una nuova tabella:
comando, err := db. Prepare("CREA TABELLA SE NON ESISTE login (testo nome utente, TESTO password)")
L'istruzione sopra crea una tabella denominata Accedere, se non esiste già. La nuova tabella ha campi denominati nome utente e parola d'ordine, ciascuno di tipo TESTO.
Se stai inserendo valori dal tuo programma nelle tue query, puoi utilizzare la notazione punto interrogativo (?) per denotare i segnaposto e quindi passare i parametri durante l'esecuzione dell'istruzione.
comando, err := db. Prepare("INSERT INTO login (username, password) values(?,?)")
Dopo aver creato un'istruzione preparata, puoi eseguirla utilizzando il suo Esec metodo. Questo metodo ti consente di passare i valori dei parametri dal tuo programma:
exec, err := comando. Esegui (valore1, valore2)
Se ehm!= zero {
Restituzione
}
Il primo valore che Esegui() restituisce è il risultato della query SQL sul database. Utilizzando questo risultato della query, puoi verificare il numero di righe interessate o l'ultimo ID inserito:
interessato, err := esecu. Righe interessate()
Se ehm!= zero {
Restituzione
}fmt. Println (interessato)
id, err := esec. LastInsertId()
Se ehm!= zero {
Restituzione
}
fmt. Println (id)
Recupero dei risultati della query
Il pacchetto database/sql consente di eseguire query sui risultati del database utilizzando il file Domanda metodo di un'istanza di database:
righe, err := db. Query("SELEZIONA * DA Utente")
Se ehm!= zero {
Restituzione
}
Il Domanda il metodo restituisce a Righe struct che puoi usare per lavorare con il tuo set di risultati. Ad esempio, puoi usare il Prossimo metodo della tua istanza di righe per scorrere su di essa e lavorare con singole righe:
var nome utente, password corda
per righe. Prossimo() {
err := righe. Scansione(&nome utente, &password)Se ehm!= zero {
tronco d'albero. Fatalln (err)
}
fmt. Println (nome utente, password)
}
Nell'esempio sopra, due variabili stringa:nome utente e parola d'ordine—rappresenta ogni valore di colonna. Il Scansione decodifica la riga corrente in quelle variabili corrispondenti.
I database SQL sono sempre utili
L'uso dei database in Go è semplice con il pacchetto database/sql. Puoi usarlo per interrogare ed eseguire comandi SQL in Go con facilità.
I database SQL sono al centro di molte applicazioni, in particolare quelle che si occupano di set di dati grandi o complessi. Puoi utilizzare database come il database SQLite in memoria per i tuoi progetti semplici come il web scraping e la creazione di bot.
La corretta conoscenza dei sistemi di gestione di database e SQL è essenziale per utilizzarli nei programmi in modo efficiente. Tuttavia, se scegli di non imparare SQL, puoi imparare a utilizzare gli ORM per interagire con i database SQL in Go.