Get the SEC CIK of company by Ticker

1. create a table to save ciks:

schema.sql

DROP TABLE IF EXISTS sec_cik;

CREATE TABLE sec_cik (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  ticker TEXT UNIQUE NOT NULL,
  cik INTEGER NOT NULL
);

2. generate the ticker-cik mapping:

sec_cik.sql

import requests

headers = {'User-Agent': 'miaowa.pro', 'Accept-Encoding': 'gzip,deflate'}
content = requests.get("https://www.sec.gov/files/company_tickers.json", headers=headers).json()

ticker_cik_dict = {}
for value in content.values():
    ticker_cik_dict[value['ticker']] = value['cik_str']
    print("INSERT INTO sec_cik (ticker, cik) VALUES ('{ticker}', {cik});".format(ticker=value['ticker'],
                                                                                 cik=value['cik_str']))

print(ticker_cik_dict)

3. init sec cik using flask

db.py import to flask app __init__.py

import sqlite3

import click
from flask import current_app, g
from flask.cli import with_appcontext


def get_db():
    if 'db' not in g:
        g.db = sqlite3.connect(
            current_app.config['DATABASE'],
            detect_types=sqlite3.PARSE_DECLTYPES
        )
        g.db.row_factory = sqlite3.Row

    return g.db


def close_db(e=None):
    db = g.pop('db', None)

    if db is not None:
        db.close()


def init_db():
    db = get_db()

    with current_app.open_resource('schema.sql') as f:
        db.executescript(f.read().decode('utf8'))


def init_app(app):
    app.teardown_appcontext(close_db)
    app.cli.add_command(init_db_command)
    app.cli.add_command(init_cik_command)

def init_cik():
    db = get_db()

    with current_app.open_resource('sec_cik.sql') as f:
        db.executescript(f.read().decode('utf-8'))


@click.command('init-db')
@with_appcontext
def init_db_command():
    """Clear the existing data and create new tables."""
    init_db()
    click.echo('Initialized the database.')


@click.command('init-cik')
@with_appcontext
def init_cik_command():
    init_cik()
    click.echo('Initialized the sec_cik table data.')

4. create table and insert data:

run in a terminal

$ export FLASK_APP=miaowa
$ export FLASK_ENV=development
$ flask init-db
$ flask init-cik
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值