Go语言 + Echo框架 + MySQL综述

当我在研究如何使用Golang + MySQL创建API时,发现了很多相关信息,下面是我整理的汇总。

基本设计

基本的流程是按照此进行。
使用Golang+Echo+dbr来进行MySQL的CRUD操作,并返回JSON格式的数据库值的讨论。

以下是使用 Echo 的方式,请参考。
使用 Go 语言开发的 Echo 框架,构建一个能返回 JSON 数据的 Web 服务器,并在 GoogleAppEngine 上运行。
使用 Go 的 Echo 框架能够轻松地实现 RESTful 接口。

Echo公式サイト是Go(Golang)的高效且简洁的HTTP服务器框架。

因为我在意,所以做了个笔记。据Echo官网的信息,他们似乎使用了一个名为carbon ads的服务来测量热图。

我对 Golang 结构体中的「`」符号记法感到好奇,所以进行了调查。

在Go语言中,标签的用途是什么?

看起来像是结构体的元数据。

关于如何在Go语言中处理MySQL的方法概述

整理了一些用于在Golang中操作SQL的库[基础/查询构造器/ORM],Go数据库/SQL教程

在查询与MySQL连接时的连接字符串时,我进行了一番调查。当我查询关于go-sql-driver/mysql时,意外地很快就找到了。第四届Golang Cafe补充说明 数据库访问(MySQL版)中提到,go-sql-driver/mysql现在支持占位符替换。

MySQL(MariaDB)中的INT(11)表达的含义可以通过以下方式确认:整数型的范围。

MySQL “show users” – 如何显示/列出 MySQL 数据库中的用户

-- DB作成
CREATE DATABASE IF NOT EXISTS db_name;

-- ユーザー作成
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT,UPDATE,INSERT,DELETE ON 'db_name'.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

-- テーブル作成
CREATE TABLE db_name.table_name (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  created_at DATETIME NOT NULL,
  updated_at DATETIME NOT NULL
);


-- ユーティリティー系
-- MySQLユーザー一覧の確認
SELECT User,Host FROM mysql.user;
-- データベース一覧
SHOW DATABASES;
-- データベース詳細情報一覧
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
-- データベース作成時のSQL文を表示
SHOW CREATE DATABASE db_name;
-- テーブル一覧
SHOW TABLES FROM db_name;
-- テーブルの構造を表示
DESC db_name.table_name;
-- APPデータベース定義
CREATE TABLE counters (
  id INT NOT NULL AUTO_INCREMENT,
  host_id INT NOT NULL,
  path varchar(2047) NOT NULL DEFAULT '/',
  count INT NOT NULL,
  created_at DATETIME NOT NULL,
  updated_at DATETIME NOT NULL,
  PRIMARY KEY (id)
);
ALTER TABLE counters ADD INDEX index_host_id_and_path(host_id, path(255));

CREATE TABLE hosts (
  id INT NOT NULL AUTO_INCREMENT,
  host_name varchar(255) NOT NULL,
  created_at DATETIME NOT NULL,
  updated_at DATETIME NOT NULL,
  PRIMARY KEY (id)
);
ALTER TABLE hosts ADD INDEX index_id(id);

MySQL类型列表

型説明指定形式別名tinyint8bit整数。tinyint(n) [unsigned] [zerofill]
smallint16bit整数。smallint(n) [unsigned] [zerofill]
mediumint24bit整数。mediumint(n) [unsigned] [zerofill]
int32bit整数。int(n) [unsigned] [zerofill]integerbigint64bit整数。bigint(n) [unsigned] [zerofill]
decimalパック10進数。decimal(n, d) [zerofill]dec,numericfloat浮動小数点数。4または8バイト。tinyint(n) [zerofill]
double浮動小数点数。double(n) [zerofill]
double precision倍精度浮動小数点数。double precision(n) [zerofill]realchar固定長文字列型。char(n) [binary]
varchar可変長文字列型。varchar(n) [binary]
tinytext可変長文字列型。255バイト以下。tinytext
text可変長文字列型。65535バイト以下。text
mediumtext可変長文字列型。1677215バイト以下。mediumtext
longtext可変長文字列型。4294967295バイト以下。longtext
date日付型。date
datetime日付時刻型。datetime
timestamp日付時刻型n桁。timestamp(n)
time時刻型。time
year年。2または4桁。year(n)
tinyblob8bit整数。tinyblob
blob8bit整数。blob
mediumblob8bit整数。mediumblob
longblob8bit整数。longblob
enum列挙型。enum(‘文字列1’,文字列2”,…)
set文字列セット型。set(‘文字列1’,文字列2”,…)

请注意,以下是对 http://www.k-cube.co.jp/wakaba/server/mysql_type.html 的引述。

MySQL的主要列标志

列フラグ概要AUTO_INCREMENT自動連番(データ型は整数型※1)DEFAULT ‘デフォルト値’値が未指定の場合のデフォルト値[NOT] NULLNULLを許容する[しない] (デフォルトはNULL)PRIMARY KEY重複する値を許さない (NULL値は不可)UNIQUE重複する値を許さない (NULL値を許可)REFERENCES テーブル名(列名, ….)外部参照制約

MYSQL的主要选项

オプション概要PRIMARY KEY (列名, ….)主キーを設定INDEX インデックス名 (列名, ….)インデックスを作成(NULL値は不可)UNIQUE インデックス名 (列名, ….)重複した値をゆるさない(NULL値は不可)FOREIGN KEY (列名) REFERENCES テーブル名 (列名, ….)外部参照制約

MySQL的整数类型是什么?

整数型有以下5种类型。

    • TINYINT

 

    • -128から127 (符号無しの場合0から255)

 

    • SMALLINT

 

    • -32768から32767 (符号無しの場合0から65535)

 

    • MEDIUMINT

 

    • -8388608から8388607 (符号無しの場合0から16777215)

 

    • INT

 

    • -2147483648から2147483647 (符号無しの場合0から4294967295)

 

    • 別名:INTEGER

 

    • BIGINT

 

    • -9223372036854775808から9223372036854775807

 

    (符号無しの場合0から18446744073709551615)

※ 引用:http://www.dbonline.jp/mysql/type/index1.html
※ 引用:DB在线网址http://www.dbonline.jp/mysql/type/index1.html

据说在处理MySQL时,最常用的库是Golang。

进行关系持久性

我开发的应用程序的源代码

package main

import (
    "net/http"
    "github.com/labstack/echo"
    "github.com/labstack/echo/engine/standard"
)

func main() {
    e := echo.New()
    e.GET("/", func(c echo.Context) error {
        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Run(standard.New(":1323"))
}
$ curl localhost:1323
Hello, World!%

请参阅相关资料

    • Golang+Echo+dbrでMySQLのCRUDをする/JSONでDBの値を返却する話

 

    • Go製のフレームワークechoを使ってJSONを返すWebサーバーを作り、GoogleAppEngineで動かす

 

    • Go の echo ってWebサーバーでサクッと REST しちゃう

 

    • Fast and unfancy HTTP server framework for Go (Golang).

 

    • carbon ads

 

    • What are the use(s) for tags in Go?

 

    • golangでSQLを叩くライブラリまとめ[基本/クエリビルダ/ORM]

 

    • Go database/sql tutorial

 

    • Golang Cafe #4 補足 データベースアクセス(MySQL編)

 

    • go-sql-driver/mysql でプレースホルダ置換をサポートしました

 

    • MySQL(MariaDB) – 整数型の範囲!

 

    • MySQL “show users” – how to show/list the users in a MySQL database

 

    Go Relational Persistence
bannerAds