21 lines
1.7 KiB
Markdown
21 lines
1.7 KiB
Markdown
# 当前接口与工具核对
|
|
|
|
## Tushare
|
|
|
|
- `pro_bar(adj="qfq")` 会请求日线与复权因子,并以最新因子归一化价格;因此新增除权事件可能改变请求区间内的历史 qfq。[Tushare `pro_bar` 源码](https://github.com/waditu/tushare/blob/master/tushare/pro/data_pro.py)
|
|
- `daily_basic` 支持按股票或交易日请求,单次最多返回 6000 行,交易日 15:00~17:00 更新;按交易日循环适合六年初始化,日常同步只需请求目标交易日。[Tushare 每日指标](https://tushare.pro/document/2?doc_id=32)
|
|
|
|
## PostgreSQL 与 Psycopg
|
|
|
|
- PostgreSQL 官方建议批量装载使用 `COPY`,其性能显著优于连续单行 `INSERT`。[PostgreSQL Populating a Database](https://www.postgresql.org/docs/current/populate.html)
|
|
- Psycopg 3 通过 `Cursor.copy("COPY ... FROM STDIN")` 和上下文管理器写入批量数据;异常会遵循事务回滚语义。[Psycopg COPY](https://www.psycopg.org/psycopg3/docs/basic/copy.html)
|
|
- Psycopg 3 支持 `with conn.transaction()`,异常时回滚,适合作为单股票同步事务边界。[Psycopg transactions](https://www.psycopg.org/psycopg3/docs/api/connections.html)
|
|
|
|
## 数据库迁移
|
|
|
|
- Alembic 可以通过 `target_metadata` 管理 SQLAlchemy schema,并可检查数据库 revision 是否到达 head;迁移应作为独立部署步骤执行。[Alembic autogenerate](https://alembic.sqlalchemy.org/en/latest/autogenerate.html)
|
|
|
|
## Docker Compose
|
|
|
|
- Docker 官方示例使用 profile 定义不会随正常 `up` 启动的一次性服务,并通过 `docker compose run --rm` 执行临时任务。[Docker Compose profiles](https://github.com/docker/docs/blob/main/content/manuals/compose/how-tos/profiles.md)
|