Bei Verwendung von Go lang mit PostgreSQL als Datenbank wird die Datei „github.com/lib/pq „Treiber ermöglicht Datenbankkonnektivität. Das manuelle Einfügen von Daten aus komplexen Strukturen mit verschachtelten JSON-Feldern in die Datenbank kann jedoch aufgrund der großen Anzahl von Feldern und Werten mühsam sein.
Zum Glück der Github. Die Bibliothek com/jmoiron/sqlx bietet mit ihrer NamedExec-Funktion eine Lösung. Mit dieser Funktion können Sie eine Struktur mit annotierten Feldnamen (unter Verwendung des db-Tags) als benannten Parameter übergeben und so den Einfügevorgang vereinfachen.
Betrachten Sie die folgende Struktur:
<code class="go">type ApplyLeave1 struct { LeaveId int `db:"leaveid"` EmpId string `db:"empid"` SupervisorEmpId string `db:"supervisorid"` }</code>
Um diese Struktur in eine Datenbanktabelle einzufügen, können Sie den folgenden Code verwenden:
<code class="go">import ( _ "github.com/lib/pq" "github.com/jmoiron/sqlx" "log" ) // Define the database connection. db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable") if err != nil { log.Fatalln(err) } // Prepare the SQL query with named parameters. query := `INSERT INTO TABLENAME(leaveid, empid, supervisorid) VALUES(:leaveid, :empid, :supervisorid)` // Create an instance of the struct to be inserted. var leave1 ApplyLeave1 // Execute the query with the named parameters. _, err = db.NamedExec(query, leave1) if err != nil { log.Fatalln(err) }</code>
Dieser Ansatz vereinfacht den Einfügevorgang erheblich und macht die manuelle Angabe jedes Felds und Werts überflüssig.
Während die SQLX-Bibliothek das Einfügen von JSON-Arrays nicht direkt unterstützt, können Sie den jsonb-Datentyp von PostgreSQL zum Speichern von JSON-Daten verwenden. Um ein JSON-Array in eine JSONB-Spalte einzufügen, können Sie es zunächst in eine Zeichenfolge konvertieren und es dann mit dem SQLX-Abfrage-Builder einfügen.
Gegeben sei beispielsweise die folgende Struktur mit einem JSON-Array-Feld:
<code class="go">type ApplyLeave1 struct { LeaveId int `db:"leaveid"` EmpId string `db:"empid"` SupervisorEmpId string `db:"supervisorid"` Certificates []CertificateInfo `db:"certificates"` }</code>
Sie können es mit dem folgenden Code in eine PostgreSQL-Datenbank einfügen:
<code class="go">// Convert the JSON array to a string. certificatesJSON, err := json.Marshal(leave1.Certificates) if err != nil { log.Fatalln(err) } // Prepare the SQL query with named parameters. query := `INSERT INTO TABLENAME(leaveid, empid, supervisorid, certificates) VALUES(:leaveid, :empid, :supervisorid, :certificates)` // Create an instance of the struct to be inserted. var leave1 ApplyLeave1 // Execute the query with the named parameters. _, err = db.NamedExec(query, map[string]interface{}{ "leaveid": leave1.LeaveId, "empid": leave1.EmpId, "supervisorid": leave1.SupervisorEmpId, "certificates": string(certificatesJSON), }) if err != nil { log.Fatalln(err) }</code>
Mit diesem Ansatz können Sie komplexe Strukturen mit JSON-Arrays auf bequeme und effiziente Weise in PostgreSQL-Datenbanken einfügen.
Das obige ist der detaillierte Inhalt vonWie füge ich Go-Strukturen mit verschachtelten JSON-Feldern mithilfe von SQLX in PostgreSQL-Datenbanken ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!