获取数据库信息

package main

import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
"log"
) var engine *xorm.Engine type User struct {
ID int `xorm:"id"`
Name string `xorm:"name"`
} func main() {
var err error
engine, err = xorm.NewEngine("mysql", "root:123456@/test")
if err != nil {
log.Fatal(err)
return
} //xorm支持获取表结构信息,通过调用engine.DBMetas()可以获取到数据库中所有的表,字段,索引的信息。
tbs, err := engine.DBMetas()
if err != nil {
log.Fatal(err)
return
}
for i, tb := range tbs {
fmt.Println("index:", i, "tbName", tb.Name)
} /*输出
index: 0 tbName prefix_user
index: 1 tbName student
*/ //TableInfo()根据传入的结构体指针及其对应的Tag,提取出模型对应的表结构信息。
//这里不是数据库当前的表结构信息,而是我们通过struct建模时希望数据库的表的结构信息
//比如user表的数据库当前有三个属性,但是只会打印出两个属性
tableInfo:=engine.TableInfo(User{})
columns:= tableInfo.Columns() for i,column := range columns{
fmt.Println("index:",i," columnName:",column.Name)
}
/*輸出:
index: 0 columnName: id
index: 1 columnName: name*/
}

表操作

  • 创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。

    package main
    
    import (
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "log"
    ) var engine *xorm.Engine type User1 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } func main() {
    var err error
    engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    if err != nil {
    log.Fatal(err)
    return
    } //创建表使用engine.CreateTables(),参数为一个或多个空的对应Struct的指针。
    err = engine.CreateTables(User1{})
    if err != nil {
    log.Fatal(err)
    return
    }
    }
  • IsTableEmpty()判断表是否为空,参数和CreateTables相同

    package main
    
    import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "log"
    ) var engine *xorm.Engine type User1 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } func main() {
    var err error
    engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    if err != nil {
    log.Fatal(err)
    return
    } //IsTableEmpty()判断表是否为空,参数和CreateTables相同
    re,err := engine.IsTableEmpty(User1{})
    if err!=nil {
    log.Fatal(err)
    return
    }
    fmt.Println(re)
    }
  • IsTableExist()判断表是否存在,参数和CreateTables相同

    package main
    
    import (
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "log"
    ) var engine *xorm.Engine type User1 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } type User2 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } func main() {
    var err error
    engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    if err != nil {
    log.Fatal(err)
    return
    } //IsTableExist()判断表是否存在,参数和CreateTables相同
    res,err := engine.IsTableExist(User1{})
    if err!=nil {
    log.Fatal(err)
    return
    }
    fmt.Println(res)
    //user1表之前建立过,所以输出为true res,err = engine.IsTableExist(User2{})
    if err!=nil {
    log.Fatal(err)
    return
    }
    fmt.Println(res)
    //之前没有建立过user2表中,所以输出为false
    }
  • 删除表使用engine.DropTables(),参数为一个或多个空的对应Struct的指针或者表的名字。

    package main
    
    import (
    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
    "log"
    ) var engine *xorm.Engine type User1 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } type User2 struct {
    ID int `xorm:"id"`
    Name string `xorm:"name"`
    } func main() {
    var err error
    engine, err = xorm.NewEngine("mysql", "root:123456@/test")
    if err != nil {
    log.Fatal(err)
    return
    } // 如果为string传入,则只删除对应的表,如果传入的为Struct,则删除表的同时还会删除对应的索引。
    err = engine.DropTables(User1{})
    if err!=nil {
    log.Fatal(err)
    return
    }
    }

参考:http://gobook.io/read/github.com/go-xorm/manual-zh-CN/

xorm表结构操作实例的更多相关文章

  1. SQL 表结构操作

    数据库知识总结(表结构操作) 1.创建表Scores 1 create table Scores --表名 2 (Id int identity(1,1) primary key,--设置主键,并且行 ...

  2. SQL server学习(二)表结构操作、SQL函数、高级查询

    数据库查询的基本格式为: select ----输出(显示)你要查询出来的值 from -----查询的依据 where -----筛选条件(对依据(数据库中存在的表)) group by ----- ...

  3. mysql数据表的基本操作:表结构操作,字段操作

    本节介绍: 表结构操作 创建数据表. 查看数据表和查看字段. 修改数据表结构 删除数据表 字段操作 新增字段. 修改字段数据类型.位置或属性. 重命名字段 删除字段 首发时间:2018-02-18  ...

  4. mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 链接:https://pan.baidu.com ...

  5. MySQL基础~~表结构操作

    登录数据库服务器 mysql -h127.0.0.1 -uroot -p123456 创建数据库 create database test; 显示所有数据库 show databases; 指定要操作 ...

  6. Oracle重建表空间操作实例

    由于环境维护或者性能测试需要,经常需要对表空间进行重建操作.重建表空间操作主要分3中情况介绍,分别是业务表空间.临时表空间和回滚段表空间的重建. 重建业务表空间 由于业务规划要求,重建后的业务表空间名 ...

  7. ORACLE表空间操作实例

    本文主要介绍oracle表空间常见的操作实例,包括创建.查询.增加.删除.修改.表空间和数据文件常用的数据字典和动态性能视图包括v$dbfile.v$datafile.v$tempfile.dba_s ...

  8. SQL Server 表结构操作

    一.创建表 --直接定义主外键 create table wallet( ID ) primary key, ,) not null, Name ) default '余额', Member_ID ) ...

  9. Hibernate之多对多表,操作实例

    多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配 ...

随机推荐

  1. Windows 实例远程桌面报错“没有远程桌面授权服务器可以提供许可证”

    参考阿里云帮助文档: https://help.aliyun.com/knowledge_detail/40859.html?spm=5176.10695662.1996646101.searchcl ...

  2. VS2017打包注册IE插件及修改IE安全选项设置【转】

    前言 最近项目需要在浏览器环境下读取员工身份证信息,要实现网页与硬件设备通信,考虑了几种实现方式: 1.借助ActiveX插件,通过程序库直接与设备通信. 优点:厂家提供了IE插件,开发简单 缺点:只 ...

  3. 封装qt http文件下载类

    #include <QApplication> #include <QtWidgets> #include <QtNetwork> //downloads one ...

  4. CMU Database Systems - Storage and BufferPool

    Database Storage 存储分为volatile和non-volatile,越快的越贵越小 那么所以要解决的第一个问题就是,如果尽量在有限的成本下,让读写更快些 意思就是,尽量读写volat ...

  5. python自动化登录获取图片登录验证码

    主要记录一下:图片验证码1.获取登录界面的图片2.获取验证码位置3.在登录页面截取验证码保存4.调用百度api识别(目前准确率较高的识别图片api)本次登录的系统页面,可以看到图片验证码的位置登录页面 ...

  6. PHP 二维数组去重(保留各个键值的同时去除重复的项)

    对于如下二维数组,要求对其进行去重: $arr = array( '=>array( 'name'=>'james', , ), '=>array( 'name'=>'susu ...

  7. Python3基础 函数 参数 多个参数都有缺省值,需要指定参数进行赋值

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  8. MySql存储过程常用的函数

    字符串类 CHARSET(str) //返回字串字符集CONCAT (string2 [,... ]) //连接字串INSTR (string ,substring ) //返回substring首次 ...

  9. Zabbix 3.2.6-Mysql多实例监控-Percona Monitoring Plugins自动发现

    mysql多实例监控实录   系统环境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 内核版本: uname -r 3.1 ...

  10. Spring Boot 使用MockMvc对象模拟调用Controller

    功能实现之后,我们要养成随手写配套单元测试的习惯,这在微服务架构中尤为重要.通常,我们实施微服务架构的时候,已经实现了前后端分离的项目与架构部署.那么在实现后端服务的时候,单元测试是在开发过程中用来验 ...