用于使用SQL的Golang库:dotsql

jopen 7年前

它不是一个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



项目主页:http://www.open-open.com/lib/view/home/1416650143242