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 会从环境变量读取。