我正在尝试创建一个程序,从网站上搜索股票价格,然后在一系列时间内计算价格之间的趋势差异。我这样做是通过将数据存储在标记为买入和卖出价格的表格中。 如果我单独运行它们就可以了。但是第二个我把它们放在同一个程序中它们不起作用。
我需要能够从列表中的每三个值计算一个趋势,因为这是每个股票的记录数,但它们都被放入一个列表中
这是我的代码
def plot(price,trend_price):
for a in stock:
count1 = 0
count2 = 1
index = 0
value = ["0"]
cursor.execute("""SELECT """+price+""" 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 +"""
("""+trend_price+""")
VALUES
("""+ t +""")
""")
我得到的错误如下
Traceback (most recent call last):
File "C:/Users/Luke_2/Desktop/Computing/Coursework/live/Jan15.py", line 172, in <module>
run()
File "C:/Users/Luke_2/Desktop/Computing/Coursework/live/Jan15.py", line 167, in run
plot("BuyPrice","TrendBuy")
File "C:/Users/Luke_2/Desktop/Computing/Coursework/live/Jan15.py", line 88, in plot
trend.append(float(row[0]))
TypeError: float() argument must be a string or a number, not 'NoneType'
答案 0 :(得分:0)
您的表中有return ok(views.html.index.render("Hello")))
个值,这些值在Python中被转换为cannot find symbol
值。您无法将NULL
转换为浮点数。也许您只想选择非NULL的行?
None
我不知道第一列的列名是什么,您必须调整查询。
我已将您的查询转换为使用SQL参数作为价格(无法使用参数插入表名,请确保您只使用硬编码的表名并且不接受不受信任的数据)。
另一种方法是在Python中跳过这些行:
None
另请注意,cursor.execute(
"SELECT ? FROM {} WHERE columnname is not NULL".format(a),
(price,))
模块可以为您转换值,请参阅SQLite and Python Types section;如果该列在数据库中声明为if rows[0] is None:
continue
,那么已经无论如何都会被赋予sqlite3
个对象。