db_connect.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package tool
  2. import (
  3. "database/sql"
  4. "log"
  5. "strings"
  6. _ "github.com/go-sql-driver/mysql"
  7. _ "modernc.org/sqlite"
  8. )
  9. func Temp_DB_connect() *sql.DB {
  10. db, err := sql.Open("sqlite", "./data/temp.db")
  11. if err != nil {
  12. log.Fatal(err)
  13. }
  14. return db
  15. }
  16. func DB_connect() *sql.DB {
  17. m_db := Temp_DB_connect()
  18. defer m_db.Close()
  19. db_set := map[string]string{}
  20. rows, err := m_db.Query("select name, data from temp where name in ('db_name', 'db_type')")
  21. if err != nil {
  22. log.Fatal(err)
  23. }
  24. defer rows.Close()
  25. for rows.Next() {
  26. var name string
  27. var data string
  28. err := rows.Scan(&name, &data)
  29. if err != nil {
  30. log.Fatal(err)
  31. }
  32. db_set[name] = data
  33. }
  34. if db_set["db_type"] == "sqlite" {
  35. db, err := sql.Open("sqlite", db_set["db_name"]+".db")
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. return db
  40. } else {
  41. rows, err := m_db.Query("select name, data from temp where name in ('db_mysql_host', 'db_mysql_user', 'db_mysql_pw', 'db_mysql_port')")
  42. if err != nil {
  43. log.Fatal(err)
  44. }
  45. defer rows.Close()
  46. for rows.Next() {
  47. var name string
  48. var data string
  49. err := rows.Scan(&name, &data)
  50. if err != nil {
  51. log.Fatal(err)
  52. }
  53. db_set[name] = data
  54. }
  55. db, err := sql.Open("mysql", db_set["db_mysql_user"]+":"+db_set["db_mysql_pw"]+"@tcp("+db_set["db_mysql_host"]+":"+db_set["db_mysql_port"]+")/"+db_set["db_name"])
  56. if err != nil {
  57. log.Fatal(err)
  58. }
  59. return db
  60. }
  61. }
  62. func DB_change(data string) string {
  63. m_db := Temp_DB_connect()
  64. defer m_db.Close()
  65. var db_set_type string
  66. err := m_db.QueryRow("select data from temp where name = 'db_type'").Scan(&db_set_type)
  67. if err != nil {
  68. if err == sql.ErrNoRows {
  69. db_set_type = "sqlite"
  70. } else {
  71. log.Fatal(err)
  72. }
  73. }
  74. if db_set_type == "mysql" {
  75. data = strings.Replace(data, "random()", "rand()", -1)
  76. data = strings.Replace(data, "collate nocase", "collate utf8mb4_general_ci", -1)
  77. }
  78. return data
  79. }