gopkg.in/issue9/orm.v0 (go): Package orm 一个简单小巧的 orm 实现方案。  目前内置了对以下数据库的支持：  其它数据库，用户可以通过实现 Dialect 接口，来实现相应的支持。  初始化：  默认情况下，orm 包并不会加载任何数据库的实例。所以想要用哪个数据库，需要手动初始化：  占位符  SQL 语句可以使用'#'字符在语句中暂替真实的表名前缀，也可以使用{} 包含一个关键字，使其它成为普通列名，如：  在实际执行时，如 DB.Query()，将第一个参数 replace 指定为 true， 相关的占位符就会被替换成与当前环境想容的实例，如在表名前缀为p_， 数据库为 mysql 时，会被替换成以下语句，然后再执行：  DB.Query(),DB.Exec(),DB.Prepare().DB.Where() 及 Tx与之对应的函数都可以使用占位符。  Model 不能指定占位符，它们默认总会使用占位符，且无法取消。  Model:  orm 包通过 struct tag 来描述 model 在数据库中的结构。大概格式如下：  目前支持以下的 struct tag：  关于core.Metaer接口。  在go不能将struct tag作用于结构体，所以为了指定一些表级别的属性， 只能通过接口的形式，在接口方法中返回一段类似于struct tag的字符串， 以达到相同的目的。  在core.Metaer中除了可以指定name(table_name)和check(name,expr)两个属性之外， 还可指定一些自定义的属性，这些属性都将会被保存到Model.Meta中。  约束名：  index,unique,check,fk 都是可以指定约束名的，在表中，约束名必须是唯一的， 即便是不同类型的约束，比如已经有一个 unique 的约束名叫作 name，那么其它类 型的约束，就不能再取这个名称了。  如何使用：  Create: 可以通过 Engine.Create() 或是 Tx.Create() 创建一张表。  Update:  Delete:  Insert:  Select:  Query/Exec:  事务：  默认的 DB 是不支持事务的，若需要事务支持，则需要调用 DB.Begin() 返回事务对象 Tx，当然并不是所有的数据库都支持事务操作的。 Tx拥有一组与 DB 相同的接口，另外还提供了一组以 `Mult` 开头的函数， 用以同时操作多条记录的。
Keywords: database|go|golang|object-relational-mapper|orm|orm-library