2017-01-15 13 views
1

私はsqliteを使用して、購入価格、販売価格、トレンド購入価格などの一連のデータを保持しています。 価格を追加しますそれは問題ありませんが、それが新しい行になる傾向を追加すると、これを他のデータと一直線にどのように追加するのですか? 置換と更新を使用しようとしましたが、他の列が何も返さずにコードに問題を引き起こしています。新しい行に行かずにsqlite 3のテーブルにデータを追加する方法

def plot(): 
    for a in stock: 
     count1 = 0 
     count2 = 1 
     index = 0 
     value = ["0"] 
     cursor.execute("""SELECT BuyPrice FROM """+a+"""""") 
     trend = [] 
     rows = cursor.fetchall() 
     for row in rows: 
      print(row[0]) 
      trend.append(float(row[0])) 
      index = index + 1 
      if index == len(web): 
       percentage = [] 
       for i in range(len(web)-1): 
        change = trend[count2]-trend[count1] 
        print(trend[count2],trend[count1]) 
        percent = (change/trend[count1])*100 
        print(percent) 
        percentage.append(percent) 
        count1 = count1 + 1 
        count2 = count2 + 1 
       for i in percentage: 
        print(i) 
        if i <= 0: 
         if i == 0: 
          value.append(0) 
         elif i <= -15: 
          value.append(-4) 
         elif i <= -10: 
          value.append(-3) 
         elif i <= -5: 
          value.append(-2) 
         elif i < 0: 
          value.append(-1) 
        else: 
         if i >= 15: 
          value.append(4) 
         elif i >= 10: 
          value.append(3) 
         elif i >= 5: 
          value.append(2) 
         elif i >= 0: 
          value.append(1) 

       for i in value: 
        t = str(i) 
        cursor.execute(""" 
         REPLACE INTO """+ a +""" 
         (TrendBuy) 
         VALUES 
         ("""+ t +""") 
         """) 

this is what i mean if its a bit hard to understand

答えて

1

のSQLiteのREPLACE INTOは、「ルックアップ列」のようなものを必要とする次のように

私のコードは、値を検索し、次の対応する値(複数可)を交換することです。一致するものがなければ、新しい行が挿入されます。アクションクエリにBuySellを組み込むことを検討してください。また、以下のSQL文字列とパラメータ化クエリをフォーマット:また

cursor.execute("REPLACE INTO {} (BuySell, TrendBuy) VALUES (?, ?)".format(a), (row[0], t)) 

、あなたが意図しない挿入を避けるために、更新クエリを実行していない新しいBUYSELL値以来の可能性の論理をループで生成します。

cursor.execute("UPDATE {} SET TrendBuy = ? WHERE BuySell = ?".format(a), (t, row[0])) 

他にも、各在庫を独自のテーブルに保存しているようです。効率性、スケーラビリティ、簡単なクエリのために、StockNameまたはSymbol列を持つ1つのStockテーブルを考えてみましょう。

関連する問題