for 循环未完成

时间:2021-07-26 07:57:54

标签: python list for-loop

我是一个正在学习 Python 的编程新手。

我正在尝试将加密货币数据备份到我自己的数据库,以便稍后进行回测。 这是我目前编写的代码。

    import pandas
    from pandas.io.sql import to_sql
    import sqlite3
    import pybithumb
    import pickle
    
    print("\nOpening DB and saved_tickers...")
    con= sqlite3.connect("E:\pythonDB\DB_fetch_1m.db")
    cur = con.cursor()
    with open ("saved_tickers.lst", "rb") as fp:
        saved_tickers = pickle.load(fp)
    
    for ticker in saved_tickers:
        # print("\n" + str('## ') + ticker + str(' ##'))
        # print("Creating new database tables if needed...")
        cur.execute(f"CREATE TABLE IF NOT EXISTS {ticker} (time TIMESTAMP PRIMARY KEY NOT NULL, open, high, low, close, volume)")
        # print("Fetching latest data from Bithumb.")
        data = pybithumb.get_candlestick(ticker, "KRW", "1m")   
        # print("Saving and Processing DB...")
        data.to_sql(str(ticker) + "_tmp", con, if_exists='replace')
        table = ticker
        table_tmp = ticker+"_tmp"
        cur.execute(f"INSERT OR IGNORE INTO {table} SELECT * FROM {table_tmp}")

saved_tickers.lst 包含我选择的加密货币。现在,如果我

print(saved_tickers)

我明白

['XRP', 'LTC', 'ETC', 'BTC', 'ETH']

当我运行这段代码时,代码:

  • 从saved_tickers列表中一一获取加密货币数据,
  • 通过名称检查是否有表,如果 db 文件中没有,则创建它。

此时,'time'列被设置为主键,这样表中就没有给定时间的重复信息。

它还将相同的数据保存到 'ticker'_tmp 表中。 然后将 'ticker'_tmp 数据插入到 'ticker'(以便表 'ticker' 没有重复项) 代码运行良好并完成了它的意图,但列表中的最后一项总是有问题。 如果没有任何表,它会检查并创建名为“ticker”的表。 然后它生成并替换新获取的数据到表 'ticker'_tmp。 但它永远不会将 'ticker'_tmp 数据插入到 'ticker' 表中。 (不运行 INSERT OR IGNORE INTO {table} SELECT * FROM {table_tmp})

我不知道为什么。 我试过仔细检查股票代码名称。更改了saved_list 几次 而且每一次,列表中的最后一个都有问题。

请,任何建议表示赞赏。 谢谢。

0 个答案:

没有答案