【发布时间】:2020-06-23 03:37:29
【问题描述】:
我是一个编程新手,我有一个数据库文件,里面有一些日期,打开,高,低,关闭数据,名称为0001.HK; 0002.HK; 0003.HK 然后我尝试建立一个循环来取出数据库中的一些数据。
conn = sqlite3.connect(os.path.join('data', "hkprice.db"))
def read_price(stock_id):
connect = 'select Date, Open, High, Low, Close, Volume from ' + stock_id
df = pd.read_sql(connect, conn,index_col=['Date'], parse_dates=['Date'])
for y in range(1 ,2):
read_price(str(y).zfill(4) + '.HK')
输出时显示:sql 'select Date, Open, High, Low, Close, Volume from 0001.HK'执行失败:无法识别的令牌:“0001.HK”
但我应该在数据库中有 0001.HK 表 我该怎么办?
【问题讨论】:
-
尝试在您传递的值周围添加
'read_price("'" + str(y).zfill(4) + ".HK'") -
它的作品非常感谢你!然后和其他问题......我如何在循环时跳过没有这样的表?
-
你遇到什么样的错误?您可以简单地添加一个
try-except指定错误类型的语句,并让它在表不存在的情况下简单地传递。 -
@pavel 你好,先生!感谢您再次回答我我看到有人使用
except: pass(它不起作用),但我发现我不应该循环带有数字范围的文件名......在我的sql db中,一些数字不是存在,如0012.HK(存在); 0013.HK(不存在); 0014.HK(存在),所以我认为我不应该循环使用文件名,但我不确定如何逐个读取sql -
@y2kmarkham,这很奇怪,因为
except: pass应该可以工作,尽管这样使用它是一个非常糟糕的习惯。而是在except %ExceptionClass%:处将 %ExceptionClass% 替换为您获得的实际异常类。确保pass位于下一行并正确缩进。