我正在使用sqlite来持有一系列关于股票的数据,如买入价,卖出价,趋势买入价等。 我添加了价格,那很好但是当我添加趋势时,它会转到一个新行,如何将其与其他数据一起添加? 我已经尝试使用替换和更新,但它仍然添加导致我的其他列返回none,这导致我的代码出现问题。
我的代码如下
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 +""")
""")
答案 0 :(得分: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列的一个Stock表。