Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种更适合用sqlite3更新列的方法?_Python_Sqlite - Fatal编程技术网

Python 有没有一种更适合用sqlite3更新列的方法?

Python 有没有一种更适合用sqlite3更新列的方法?,python,sqlite,Python,Sqlite,我正在github上开发一个开源股票分析工具。其中一个关键问题是要有一个包含每只股票所有指标的数据库,并每天更新。我几周前才开始学习编码,所以我是个超级新手 我设法将这段代码用胶带粘在一起,lol从这个请求中导入股票列表,它显示了在最后一天交易的所有股票,并更新了数据库中的列。 钥匙' 现在它只使用了一个csv文件,我正在用它进行测试,但我将添加代码,使json请求成为一个具有相同结构的数据框架,以便一切继续工作。它还可以每天运行并更新所有内容 问题是我将有5张桌子。每个图书馆有一个alpha

我正在github上开发一个开源股票分析工具。其中一个关键问题是要有一个包含每只股票所有指标的数据库,并每天更新。我几周前才开始学习编码,所以我是个超级新手

我设法将这段代码用胶带粘在一起,lol从这个请求中导入股票列表,它显示了在最后一天交易的所有股票,并更新了数据库中的列。 钥匙'

现在它只使用了一个csv文件,我正在用它进行测试,但我将添加代码,使json请求成为一个具有相同结构的数据框架,以便一切继续工作。它还可以每天运行并更新所有内容

问题是我将有5张桌子。每个图书馆有一个alpha vantage,每个图书馆大约有2500个专栏。我真的不想为每个指标写2500次

 stock_name = EXCLUDED.stock_name,
对未来的人们来说,更新和添加额外的功能似乎也会让人恼火

问题

有人能帮我把这段代码弄得更干净一些吗?这样,它就不用手动编写要更新的列,而是循环遍历表中的所有列并更新它们?与我现在更新它们的方式相同,但只是试图取代它现在工作方式的重复性

  • 检查表中是否有股票行情器
  • 如果没有,只需添加新的股票代码和该行的所有数据
  • 如果已经有股票代码,那么如果该行的数据与已经存在的数据不同,它只会更新该行的数据
  • 这就是我一直在测试的当前表的样子。

    当前代码

    import pandas as pd
    from pandas import DataFrame
    from pandas import ExcelWriter
    import csv
    import sqlite3
    
    ### IMPORT CSV ###
    stock_csv_file = pd.read_csv (r'C:\Users\home\Desktop\code_projects\FIRE_Dashboard\db\alpha_vantage_active_stocks.csv')
    
    ### CHANGING INDEX NAMES FROM CSV TO TABLE NAMES ###
    df = pd.DataFrame(stock_csv_file)
    df = df.rename(columns = {"symbol":"stock_ticker", "name":"stock_name", "exchange":"stock_exchange", "ipoDate":"stock_ipoDate", "delistingDate":"stock_delistingDate", "status":"stock_status"})
    
    ### UPDATING DATABSE WITH SQLITE3 ###
    conn = sqlite3.connect('stockmarket.db')
    c = conn.cursor()
    
    insert_statement = """
    INSERT INTO stocks (stock_ticker,
                        stock_name,
                        stock_exchange,
                        stock_ipoDate,
                        stock_delistingDate,
                        stock_status
                        )
    VALUES (?, ?, ?, ?, ?, ?)
    ON CONFLICT (stock_ticker) DO UPDATE
        SET 
            stock_name = EXCLUDED.stock_name,
            stock_exchange = EXCLUDED.stock_exchange,
            stock_ipoDate = EXCLUDED.stock_ipoDate,
            stock_delistingDate = EXCLUDED.stock_delistingDate,
            stock_status = EXCLUDED.stock_status
        """
    
    for i in range(len(df)):
        values = tuple(df.iloc[i])
        c.execute(insert_statement, values)
        conn.commit()