python获取股票代码对应名称

import akshare as ak
import pandas as pd
import pymysql
from apscheduler.schedulers.blocking import BlockingScheduler
from loguru import logger
import time
import os

log_path = os.path.join('/logs/sec_name'+ time.strftime("%Y-%m-%d", time.localtime()) + '.log')
logger.add(log_path, format="{time:YYYY-MM-DD at HH:mm:ss.SSS}|{level}|{message}", level="INFO", rotation="100MB",compression='zip', enqueue=True, diagnose=True, retention="5 days", )


class Loggings:
    __instance = None

    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(Loggings, cls).__new__(cls, *args, **kwargs)

        return cls.__instance

    def info(self, msg):
        return logger.info(msg)

    def debug(self, msg):
        return logger.debug(msg)

    def warning(self, msg):
        return logger.warning(msg)

    def error(self, msg):
        return logger.error(msg)

    def exception(self, msg):
        return logger.exception(msg)

def connect_sql():
    
    conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',password='123456',db='mysql')
    return conn

# 上海深圳代码
def sw():
    total_df = pd.DataFrame()
    for ind in ["主板A股", "科创板"]:
        df = ak.stock_info_sh_name_code(indicator = ind)[['公司代码','公司简称']]
        df.columns = ['security_id', 'security_name']
        total_df = pd.concat([total_df, df])

    ## SZ: {"A股列表", "B股列表", "CDR列表", "AB股列表"}
    ## ['板块', 'A股代码', 'A股简称', 'A股上市日期', 'A股总股本', 'A股流通股本', '所属行业']
    for ind in ["A股列表"]:
        df = ak.stock_info_sz_name_code(indicator="A股列表")[['A股代码','A股简称']]
        df.columns = ['security_id', 'security_name']
        total_df = pd.concat([total_df, df])

    ## {"暂停上市公司", "终止上市公司"}
    df = ak.stock_info_sz_delist(indicator="暂停上市公司")
    df.columns = ['security_id', 'security_name', 'listing_date', 'pause_date']
    df = df[['security_id', 'security_name']]
    total_df = pd.concat([total_df, df])
    df = ak.stock_info_sz_delist(indicator="终止上市公司")
    df.columns = ['security_id', 'security_name', 'listing_date', 'delisting_date']
    df = df[['security_id', 'security_name']]
    total_df = pd.concat([total_df, df])

    return total_df

#更新数据
def intodb():
    sw_df = sw()
    hk_df = hk()
    truncate_sql = "truncate table invents_stock_name"
    sql = "insert into invents_stock_name(security_id,security_name)values(%s,%s)"
    conn = connect_sql()
    cur = conn.cursor()
    #更新数据前 清空表中原有数据
    try:
        cur.execute(truncate_sql)
    except:
        loggings.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}------->数据清空失败')
    #数据入库
    for index,row in sw_df.iterrows():
        cur.execute(sql,(row[0],row[1]))
    for index,row in hk_df.iterrows():
        cur.execute(sql,(row[0], row[1]))
    cur.close()
    conn.commit()
    conn.close()
    loggings.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}------->更新完毕')

#港股代码
def hk():
    df = ak.stock_hk_spot_em()
    df = df[['代码', '名称']]
    df.columns = ['security_id', 'security_name']
    df = df[['security_id', 'security_name']]
    return df

if __name__ == '__main__':
    loggings = Loggings()
    sched = BlockingScheduler()
    #执行定时任务 每两周执行一次
    sched.add_job(intodb, 'interval', weeks=2, id='my_job_id')
    loggings.info(f'{time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}------->定时任务开启更新')
    sched.start()

你可以通过设置 `QCompleter` 的 `model` 属性来实现在 QLineEdit 中同时支持股票代码名称的搜索。以下是一个示例: ``` python import tushare as ts from PyQt5.QtCore import Qt from PyQt5.QtGui import QStandardItem, QStandardItemModel from PyQt5.QtWidgets import QApplication, QLineEdit, QCompleter # 获取股票列表 stock_list = ts.get_stock_basics() # 创建一个带有自动补全功能的 QLineEdit 组件 line_edit = QLineEdit() line_edit.setPlaceholderText('请输入股票代码名称') line_edit.setAlignment(Qt.AlignCenter) # 创建一个 QStandardItemModel model = QStandardItemModel() # 将股票代码名称添加到 QStandardItemModel 中 for code, name in zip(stock_list.index, stock_list['name']): item = QStandardItem('{} {}'.format(code, name)) item.setData(code, Qt.UserRole) model.appendRow(item) # 创建一个自动补全器,并将 QStandardItemModel 设置为其 model 属性 completer = QCompleter(model, line_edit) completer.setCaseSensitivity(Qt.CaseInsensitive) completer.setFilterMode(Qt.MatchContains) line_edit.setCompleter(completer) ``` 这会在 QLineEdit 中同时支持股票代码名称的搜索。当用户输入股票代码名称时,自动补全器会根据其 `model` 属性中的数据进行匹配,并在下拉列表中显示匹配的结果。当用户选择一个结果时,可以通过 `QStandardItem` 的 `data()` 方法获取对应股票代码。例如: ``` python # 获取用户选择的股票代码 item = completer.currentCompletion() code = item.data(Qt.UserRole) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值