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将进行如下的同步操作:* 自动检测和创建表,这个检测是根据表的名字* 自动检测和新增表中的字段,这个 ...