J'ai appris les bases du langage Go pendant une semaine ou deux et créé une application Web simple avec la fonction CRUD. Je n'ai pas trouvé d'article qui mènerait à une solution même si je trébuchais (clause LIKE) en exploitant la base de données dans le processus. J'ai décidé d'écrire cet article.
https://qiita.com/init/items/2edfc7acf11234e5b1aa Les opérations de base de la base de données sont décrites dans l'article ci-dessus. Puisque c'est la première fois que j'écris un article sur Qiita, je n'écrirai que sur la clause LIKE sur laquelle je suis tombé par hasard.
Version: aller 1.15.3
db:SQLite3
PC:Mac
Installation de golang, SQLite3, go-sqlite3
package main
import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"log"
)
var DbConnection *sql.DB
type Uset struct {
Id int
Name string
Age int
}
func main() {
DbConnection, err := sql.Open("sqlite3", "../example.sql")
if err != nil {
log.Fatalln(err)
}
defer DbConnection.Close()
cmd := `CREATE TABLE IF NOT EXISTS user(id INTEGER PRIMARY KEY,
name STRING,
age INT)`
_, err = DbConnection.Exec(cmd)
if err != nil {
log.Fatalln(err)
}
}
$ sqlite3 example.sql
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .table
user
sqlite>
sqlite> select * from user;
1|yamada|20
2|yamamoto|22
3|suzuki|19
4|tanaka|15
5|miyamoto|30
sqlite>
J'ai mis 5 disques. À partir de la gauche, identifiant le nom âge
cmd := "SELECT * FROM user WHERE name LIKE ?"
rows, err := Dbconnection.Query(cmd, "%yamada%")
if err != nil {
log.Println(err)
}
defer rows.Close()
var users []User
for rows.Next() {
var user User
err = rows.Scan(&user.Id, &m.Name, &m.Age)
if err != nil {
log.Println(err)
}
users = append(users, user)
fmt.Println(users)
$ go run main.go
[{1 yamada 20}]
//résultat go run main.go []
Je passe une valeur au "?"
Au lieu de l'inclure d'abord dans "%%", j'ai dû passer la valeur avec "%" comme ""% yamada% "".
J'ai trouvé un article sur la clause LIKE de Python x SQLite et je l'ai utilisé comme référence.
<br>
Aux terminaux, etc.
sqlite> select * from user where name like '%yamada%'; 1|yamada|20
Je peux y aller.
#### Les nombres entiers peuvent faire de même
cmd := "SELECT * FROM user WHERE age LIKE ?" rows, err := DbConnection.Query(cmd, "%1%")
//résultat [{3 suzuki 19} {4 tanaka 15}]
## Autres modes d'utilisation
#### Lors de la récupération d'enregistrements commençant par n'importe quelle chaîne
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "y%")
//résultat [{1 yamada 20} {2 yamamoto 22}]
#### Obtenez des données où "m" vient deux fois
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "%m%m%")
//résultat [{2 yamamoto 22} {5 miyamoto 30}]
#### Obtenez des données avec des colonnes de longueur arbitraire (6 caractères dans l'exemple)
cmd := "SELECT * FROM user WHERE name LIKE ?" rows, err := DbConnection.Query(cmd, "______")
//résultat [{1 yamada 20} {3 suzuki 19} {4 tanaka 15}]
## finalement
Je ne sais pas si quelqu'un va trébucher de la même manière, mais j'espère que cela aidera quelqu'un. (Je voulais écrire les détails du code, mais je suis désolé que cela ait pris du temps car je suis nouveau.)
Lorsque j'ai créé une application simple, j'ai réalisé que le golang n'était pas aussi informatif que Rails.
A l'avenir, j'aimerais écrire un article sur ce que j'ai remarqué en apprenant le golang.
Merci d'avoir regardé jusqu'à la fin.
Recommended Posts