• SQLite自动建库建表


    1. SpringBoot版本
      1. package com.ciih.facebarrier.config;
      2. import Commom.osSelect;
      3. import cn.hutool.db.Entity;
      4. import cn.hutool.db.handler.EntityListHandler;
      5. import cn.hutool.db.sql.SqlExecutor;
      6. import com.ciih.facebarrier.model.SysConfig;
      7. import com.ciih.facebarrier.service.SysConfigService;
      8. import org.springframework.stereotype.Component;
      9. import javax.annotation.PostConstruct;
      10. import javax.annotation.Resource;
      11. import javax.sql.DataSource;
      12. import java.io.IOException;
      13. import java.sql.Connection;
      14. import java.sql.SQLException;
      15. import java.util.List;
      16. import java.util.Map;
      17. import java.util.stream.Collectors;
      18. /**
      19. * 数据库配置
      20. */
      21. @Component
      22. public class DbConfig {
      23. @Resource
      24. DataSource dataSource;
      25. @Resource
      26. SysConfigService sysConfigService;
      27. /**
      28. * 初始化数据库
      29. */
      30. private static void createDatabase() throws IOException {
      31. if (osSelect.isLinux()) {
      32. String[] cmd = new String[]{"/bin/sh", "-c", "cd /home/webapps&&cd /home/webapps&& if [ ! -f \"barrier.db\" ];then touch barrier.db; fi;"};
      33. Runtime.getRuntime().exec(cmd);
      34. } else if (osSelect.isWindows()) {
      35. //创建sqlite3数据库文件
      36. Runtime.getRuntime().exec("cmd /c if not exist fast.db type nul>barrier.db");
      37. }
      38. }
      39. /**
      40. * 初始化表
      41. */
      42. private void createTables() throws SQLException {
      43. Connection connection = dataSource.getConnection();
      44. List list = SqlExecutor.query(connection, "SELECT name FROM sqlite_master ", new EntityListHandler());
      45. List tables = list.stream().map(x -> x.get("name").toString()).collect(Collectors.toList());
      46. if (!tables.contains("device")) {
      47. SqlExecutor.execute(connection, "CREATE TABLE \"device\" (\n" +
      48. " \"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
      49. " \"ip\" TEXT NOT NULL,\n" +
      50. " \"port\" TEXT NOT NULL,\n" +
      51. " \"username\" TEXT NOT NULL,\n" +
      52. " \"password\" TEXT NOT NULL,\n" +
      53. " \"serial_number\" text,\n" +
      54. " \"position\" text,\n" +
      55. " \"direction\" TEXT\n" +
      56. ");");
      57. SqlExecutor.execute(connection, "INSERT INTO \"device\"(\"ip\", \"port\", \"username\", \"password\", \"serial_number\", \"position\", \"direction\") VALUES ('192.168.88.186', '8000', 'admin', 'zj123456', 'G59394420', '安特磁材厂区南门', '进');");
      58. SqlExecutor.execute(connection, "INSERT INTO \"device\"(\"ip\", \"port\", \"username\", \"password\", \"serial_number\", \"position\", \"direction\") VALUES ('192.168.88.187', '8000', 'admin', 'zj123456', 'G59394482', '安特磁材厂区南门', '出');");
      59. }
      60. if (!tables.contains("sys_config")) {
      61. SqlExecutor.execute(connection, "CREATE TABLE \"sys_config\" ( \"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT, \"business_key\" text ( 255 ) NOT NULL, \"business_value\" text NOT NULL, \"business_description\" text NOT NULL );\n" +
      62. "CREATE UNIQUE INDEX \"sys_config_business_key\" ON \"sys_config\" ( \"business_key\" ASC );");
      63. //初始化参数:
      64. SqlExecutor.execute(connection, "INSERT INTO \"sys_config\"( \"business_key\", \"business_value\", \"business_description\") VALUES ( 'AlarmPushAddress', 'http://atcc-workshoptest.ciih.net/java/auth/login', '收到报警后回调外网地址');");
      65. SqlExecutor.execute(connection, "INSERT INTO \"sys_config\"( \"business_key\", \"business_value\", \"business_description\") VALUES ( 'AlarmPushAddressToken', 'Authorization=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJ1c2VyIiwibG9naW5JZCI6IjE1MjY3Mzk4MTMxMTk2NiIsImRldmljZSI6ImRlZmF1bHQtZGV2aWNlIiwiZWZmIjoxNjYyNzk5MDE3OTYxfQ.xPQNsuAfV_g7t5XoQ01MNaF44TQYUSP8WbMuApenDQQ', '访问凭证');");
      66. SqlExecutor.execute(connection, "INSERT INTO \"sys_config\"( \"business_key\", \"business_value\", \"business_description\") VALUES ( 'AlarmLoginAddress', 'http://atcc-workshoptest.ciih.net/java/auth/getToken', '获取访问凭证地址');");
      67. SqlExecutor.execute(connection, "INSERT INTO \"sys_config\"( \"business_key\", \"business_value\", \"business_description\") VALUES ( 'AlarmLoginUserName', '15267398131', '账号');");
      68. SqlExecutor.execute(connection, "INSERT INTO \"sys_config\"( \"business_key\", \"business_value\", \"business_description\") VALUES ( 'AlarmLoginPassword', 'admin@123', '密码');");
      69. }
      70. }
      71. @PostConstruct
      72. public void init() throws SQLException, IOException {
      73. //初始化数据库
      74. createDatabase();
      75. //初始化数据库表
      76. createTables();
      77. }
      78. }
    2.  FastAPI版本
    1. """
    2. SQLite数据库初始化:
    3. 1.建库
    4. 2.建表
    5. """
    6. import os
    7. import sqlite3
    8. # 执行SQL-sqlite3
    9. def execute_sqlite3(sql: str):
    10. conn = sqlite3.connect('./db/fast.db')
    11. cur = conn.cursor()
    12. cur.execute(sql)
    13. data = cur.fetchall()
    14. conn.close()
    15. return data
    16. # 建库(不存在则创建)
    17. def __createDatabase(db_name: str):
    18. # win
    19. if os.sep == "\\":
    20. os.popen(f"cmd /c if not exist ./db/{db_name}.db type nul>./db/{db_name}.db")
    21. else: # linux
    22. os.popen(f'/bin/sh&&-c&&cd /home/webapps&& if [ ! -f "./db/{db_name}.db" ];then touch ./db/{db_name}.db; fi;')
    23. # 建表(不存在则创建)
    24. def __createTables():
    25. sql_select_tables = "SELECT name FROM sqlite_master"
    26. tables = execute_sqlite3(sql_select_tables)
    27. table_names = [i[0] for i in tables]
    28. if not table_names.__contains__("operation_record"):
    29. sql_create_table = 'CREATE TABLE "operation_record" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "ip" text NOT NULL, "create_time" text NOT NULL,"update_time" text NOT NULL);'
    30. execute_sqlite3(sql_create_table)
    31. def init():
    32. __createDatabase('fast')
    33. __createTables()

  • 相关阅读:
    mybatis,spring,springmvc框架整合实例(SSM)
    【SQL】锁机制
    Springboot的房屋租赁租房系统049
    基于JAVA+SpringMVC+Mybatis+Vue+MYSQL的医药销售管理系统
    使用 typescript + express 创建 NodeJs 后端服务
    Synchronized锁升级原理与过程深入剖析
    Appium学习日记(一)——Appium工作原理及其主要组件
    liunx 用户组和用户 的增删改查
    C++-筛选文件夹中符合要求的文件并拷贝出来(以手机号码查找为例)
    Java注释
  • 原文地址:https://blog.csdn.net/wenxingchen/article/details/127645493