{"id":50375653,"url":"https://github.com/vnpy/vnpy_questdb","last_synced_at":"2026-05-30T09:30:25.953Z","repository":{"id":357761735,"uuid":"1227614277","full_name":"vnpy/vnpy_questdb","owner":"vnpy","description":"VeighNa框架的QuestDB数据库接口","archived":false,"fork":false,"pushed_at":"2026-05-14T05:51:37.000Z","size":17,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-14T07:35:54.590Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vnpy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-02T23:33:48.000Z","updated_at":"2026-05-14T05:51:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vnpy/vnpy_questdb","commit_stats":null,"previous_names":["vnpy/vnpy_questdb"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vnpy/vnpy_questdb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnpy%2Fvnpy_questdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnpy%2Fvnpy_questdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnpy%2Fvnpy_questdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnpy%2Fvnpy_questdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vnpy","download_url":"https://codeload.github.com/vnpy/vnpy_questdb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vnpy%2Fvnpy_questdb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33687717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-30T09:30:25.413Z","updated_at":"2026-05-30T09:30:25.948Z","avatar_url":"https://github.com/vnpy.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VeighNa框架的QuestDB数据库接口\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src =\"https://vnpy.oss-cn-shanghai.aliyuncs.com/vnpy-logo.png\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src =\"https://img.shields.io/badge/version-1.0.0-blueviolet.svg\"/\u003e\n    \u003cimg src =\"https://img.shields.io/badge/platform-windows|linux|macos-yellow.svg\"/\u003e\n    \u003cimg src =\"https://img.shields.io/badge/python-3.10|3.11|3.12|3.13-blue.svg\" /\u003e\n\u003c/p\u003e\n\n## 说明\n\n对接 QuestDB 的高性能时序数据库接口实现。\n\n主要特性：\n\n- 通过 QuestDB ILP/HTTP 高速写入K线和Tick数据。\n- 通过 PGWire 执行建表、查询、汇总和逻辑删除。\n- 使用 QuestDB WAL 表和 `DEDUP UPSERT KEYS` 支持重复数据覆盖。\n- 使用 `deleted` 字段进行逻辑删除，查询和汇总时自动过滤已删除数据。\n\n## 安装\n\n```bash\npip install vnpy_questdb\n```\n\n## QuestDB 端口说明\n\n当前实现会同时使用 QuestDB 的两个服务端口：\n\n- `database.port`：PGWire SQL端口，默认 `8812`。代码使用 `psycopg` 连接该端口，用于创建表、读取数据、查询汇总、执行逻辑删除，以及检查 WAL 事务是否已经应用。\n- `database.http_port`：HTTP端口，默认 `9000`。代码使用 `questdb.ingress.Sender` 通过 ILP/HTTP 写入K线和Tick数据。\n\n这两个端口的职责不同，不能互相替代。`8812` 面向 PostgreSQL Wire Protocol 查询；`9000` 面向 QuestDB HTTP服务，其中包含 ILP/HTTP 写入入口和 Web Console。如果使用 Docker、远程服务器或防火墙，需要同时开放这两个端口。\n\n示例 Docker 端口映射：\n\n```bash\ndocker run --rm -p 8812:8812 -p 9000:9000 questdb/questdb\n```\n\n当前版本使用 ILP/HTTP 写入，不使用 QuestDB 的 ILP/TCP `9009` 端口。\n\n## VeighNa 配置\n\n在 VeighNa 配置文件中选择 QuestDB 数据库，并配置连接参数：\n\n```json\n{\n    \"database.name\": \"questdb\",\n    \"database.host\": \"localhost\",\n    \"database.port\": 8812,\n    \"database.user\": \"admin\",\n    \"database.password\": \"quest\",\n    \"database.database\": \"qdb\",\n    \"database.http_port\": 9000\n}\n```\n\n参数说明：\n\n- `database.name`：数据库适配器名称，使用本插件时配置为 `questdb`。\n- `database.host`：QuestDB 服务地址，PGWire 和 HTTP ILP 都会连接该地址。\n- `database.port`：PGWire SQL端口，用于查询和管理操作。\n- `database.user`：PGWire 用户名，QuestDB 默认值为 `admin`。\n- `database.password`：PGWire 密码，QuestDB 默认值为 `quest`。\n- `database.database`：PGWire 数据库名，QuestDB 默认值为 `qdb`。\n- `database.http_port`：QuestDB HTTP端口，用于 ILP/HTTP 数据写入。\n\n如果 QuestDB 部署在远程主机，请确认 `database.host` 可以从运行 VeighNa 的机器访问，并确认 `database.port` 与 `database.http_port` 均已开放。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnpy%2Fvnpy_questdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvnpy%2Fvnpy_questdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvnpy%2Fvnpy_questdb/lists"}