配置数据库

NTQ 支持三种数据库:DuckDB(默认,零部署)、MySQL、PostgreSQL。数据库配置分两层文件管理:common.json 决定用哪种数据库,{db_type}.json 决定怎么连。

文件结构

数据库配置文件全部放在 database/ 子目录下:

core/default_config/database/         ← 默认配置(只读)
 common.json                          ← 选哪种数据库 + 批量写入设置
 duckdb.json                          ← DuckDB 专用配置
 mysql.json                           ← MySQL 专用配置
 postgresql.json                      ← PostgreSQL 专用配置
userspace/system/config/database/     ← 用户覆写(只写要改的)
 common.json                          ← 改数据库类型或批量写入参数
 duckdb.json                          ← 改 DuckDB 配置
 mysql.json                           ← 改 MySQL 连接
 postgresql.json                      ← 改 PostgreSQL 连接

加载顺序:默认配置 → 用户配置(深度合并)→ 环境变量(最高优先级)。

配置数据库

配置数据库需要2个步骤:

1. 在 common.json 里声明要要使用什么数据库。

例如:

{
 "database_type": "duckdb", 
}

如果想用mysql就需要变成:

{
  "database_type": "mysql" //或者 postgresql
}

2. 在 {db_type}.json 里声明要要使用什么数据库。

比如想变成mysql,那就需要修改 mysql.json 文件

这个 {db_type}.json 文件里需要声明你要连接的具体数据库的连接信息,比如:

{
 "host": "localhost",
 "port": 3306,
 "database": "new_tea_quant",
 "user": "root",
 "password": "your_password_here"
}

的意思就是连接本地的mysql数据库,访问连接是localhost:3306, 通过用户root和密码your_password_here登录后连接。

使用小技巧:您可以在本地配置多个数据库,比如使用mysql配置一个叫dev1的数据库,放一些数据,如果需要测试其他范围的数据,您可以直接新建一个dev2的数据库,放另一组数据。如果想在数据库之间切换也很方便,您一旦配置好了具体数据库的配置,直接在common.json里选不同数据库type就能切换不同的数据源:比如duckdb放演示数据,mysql放生产数据等等。

配置参数:

mysql:

字段

默认值

说明

host

"localhost"

MySQL 服务器地址

port

3306

端口号

database

"new_tea_quant"

数据库名

user

"root"

用户名

password

"your_password_here"

密码

postgresql:

字段

默认值

说明

host

"localhost"

PostgreSQL 服务器地址

port

5432

端口号

database

"new_tea_quant"

数据库名

user

"postgres"

用户名

password

"your_password_here"

密码

default_pgsql_schema

"public"

默认 schema 名

duckdb:

域

默认文件名

存储内容

data

data.duckdb

行情数据(K线、指标、财务等)

tag

tag.duckdb

标签和扫描结果

strategy

strategy.duckdb

策略和回测数据

如果你想把数据文件放到别的位置(比如另一个磁盘),改成绝对路径:

{
 "domains": {
   "data": {"db_path": "D:/ntq_data/data.duckdb"},
   "tag": {"db_path": "D:/ntq_data/tag.duckdb"},
   "strategy": {"db_path": "D:/ntq_data/strategy.duckdb"}
 }
}

高级篇:使用环境变量配置数据库

如果你想用环境变量管理数据库密码(不在配置文件里明文存储),NTQ 支持以下环境变量,优先级高于配置文件:

MySQL

环境变量

覆盖字段

DB_MYSQL_HOST

host

DB_MYSQL_PORT

port

DB_MYSQL_DATABASE

database

DB_MYSQL_USER

user

DB_MYSQL_PASSWORD

password

PostgreSQL

环境变量

覆盖字段

DB_POSTGRESQL_HOST

host

DB_POSTGRESQL_PORT

port

DB_POSTGRESQL_DATABASE

database

DB_POSTGRESQL_USER

user

DB_POSTGRESQL_PASSWORD

password

使用方式(以 MySQL 为例):

export DB_MYSQL_USER="ntq_user"
export DB_MYSQL_PASSWORD="secret_password"

配置文件里可以不写 user 和 password,NTQ 会从环境变量读取。