Xorm 表结构操作

xorm 提供了一些动态获取和修改表结构的方法,通过这些方法可以动态同步数据库结构,导出数据库结构,导入数据库结构。如果您只是需要一个工具,可以直接使用go get github.com/go-xorm/cmd/xorm来安装xorm命令行工具。

 

1. 获取数据库信息

我们可以通过 DBMetas()、TableInfo()获取数据库信息和表信息。

  • DBMetas()

xorm支持获取表结构信息,通过调用 engine.DBMetas() 可以获取到数据库中所有的表,字段,索引的信息。

  • TableInfo()

根据传入的结构体指针及其对应的Tag,提取出模型对应的表结构信息。这里不是数据库当前的表结构信息,而是我们通过struct建模时希望数据库的表的结构信息。

 

2. 表操作

  • CreateTables()

创建表使用 engine.CreateTables(),参数为一个或多个空的对应Struct的指针。同时可用的方法有Charset()和StoreEngine(),如果对应的数据库支持,这两个方法可以在创建表时指定表的字符编码和使用的引擎。Charset()和StoreEngine()当前仅支持Mysql数据库。

  • IsTableEmpty()

判断表是否为空,参数和CreateTables相同。

  • IsTableExist()

判断表是否存在。

  • DropTables()

删除表使用 engine.DropTables(),参数为一个或多个空的对应Struct的指针或者表的名字。如果为string传入,则只删除对应的表,如果传入的为Struct,则删除表的同时还会删除对应的索引。

 

3. 创建索引和唯一索引

  • CreateIndexes

根据struct中的tag来创建索引。

  • CreateUniques

根据struct中的tag来创建唯一索引。

同步能够部分智能的根据结构体的变动检测表结构的变动,并自动同步。目前有两个实现: 1. SyncSync将进行如下的同步操作:* 自动检测和创建表,这个检测是根据表的名字* 自动检测和新增表中的字段,这个 ...