用于使用SQL的Golang库:dotsql
jopen
10年前
它不是一个ORM,也不是一个查询构建器。Dotsql是一个库,可以帮助你将所有SQL放在同一个文件中,方便使用。
Dotsql 受 yesql 启发。
用法
首先,您需要定义查询至一个文件中:
-- name: create-users-table CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(255), email VARCHAR(255) ); -- name: create-user INSERT INTO users (name, email) VALUES(?, ?) -- name: find-one-user-by-email SELECT id,name,email FROM users WHERE email = ? LIMIT 1 --name: drop-users-table DROP TABLE users请注意,每个查询都有一个名字标签(--name:<部分名称>),这将有利于指一个特定的查询
然后,你应该能够运行,如:
// Get a database handle db, err := sql.Open("sqlite3", ":memory:") // Loads queries from file dot, err := dotsql.Load("queries.sql") // Run queries res, err := dot.Exec(db, "create-users-table") res, err := dot.Exec(db, "create-user", "User Name", "main@example.com") rows, err := dot.Query(db, "find-one-user-by-email", "main@example.com") stmt, err := dot.Prepare(db, "drop-users-table") result, err := stmt.Exec()
对于一个完整的示例,请参阅 integration_test.go and test_schema.sql