Go语言操作MySQL:轻松上手数据库开发

很多人觉得理财离不开Excel,其实现在很多自动化记账、投资分析工具背后都是程序在跑数据。如果你懂点编程,像Go语言这种高效又简单的工具,配合MySQL数据,分分钟就能搭出自己的财务管理系统。

先装好必要的工具包

Go本身不自带数据库功能,得借助第三方库。最常用的是github.com/go-sql-driver/mysql,安装很简单,在命令行里执行:

go get -u github.com/go-sql-driver/mysql

这就像给你的Go程序装了个“连接器”,让它能和MySQL对话。

连上你的MySQL数据库

假设你本地有个MySQL服务,用户名是root,密码123456,数据库叫finance_db。用下面这段代码就能连上:

package main

import (
  "database/sql"
  "fmt"
  "_ github.com/go-sql-driver/mysql"
)

func main() {
  db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/finance_db")
  if err != nil {
    panic(err.Error())
  }
  defer db.Close()

  err = db.Ping()
  if err != nil {
    panic(err.Error())
  }
  fmt.Println("数据库连接成功!")
}

这段代码就像是打开了一扇门,让Go程序可以进出MySQL读写数据。

创建一张记账表试试

比如你想记录每月支出,可以建个expenses表:

_, err := db.Exec(
  "CREATE TABLE IF NOT EXISTS expenses (" +
  "id INT AUTO_INCREMENT PRIMARY KEY, " +
  "amount DECIMAL(10,2), category VARCHAR(50), date DATE)")
if err != nil {
  panic(err.Error())
}

这样就建好了一个带编号、金额、分类和日期的表格,以后每一笔花销都能存进去。

往数据库里写一笔消费记录

昨天买了杯咖啡花了32元,分类是餐饮,可以这样插入:

_, err := db.Exec(
  "INSERT INTO expenses (amount, category, date) VALUES (?, ?, ?)",
  32.00, "餐饮", "2024-04-05")
if err != nil {
  panic(err.Error())
}
fmt.Println("记录已添加")

这里的问号是占位符,防止SQL注入,安全又方便。

查一下本月花了多少钱

想看看四月总支出?直接查询:

rows, err := db.Query("SELECT amount, category, date FROM expenses WHERE date LIKE '2024-04%'")
if err != nil {
  panic(err.Error())
}
defer rows.Close()

for rows.Next() {
  var amount float64
  var category, date string
  err := rows.Scan(&amount, &category, &date)
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%.2f元 | %s | %s\n", amount, category, date)
}

跑一下程序,所有四月的开销就列出来了,比翻小票快多了。

把这些代码组合起来,你可以写个小程序,每天自动导入银行卡账单,按类别统计支出,甚至生成图表提醒你别超支。技术不一定要多高深,能解决实际问题才是关键。