【发布时间】:2021-10-06 10:57:24
【问题描述】:
我尝试在 python 中编写一些代码来执行 4 次循环。它将失败,因为spTest 不存在。所以我想再次尝试循环(总共重复 4 次),如果仍然找不到它,我想打破并引发错误。
import traceback
import urllib
from datetime import datetime
import numpy as np
import pandas as pd
import sqlalchemy as db
from sqlalchemy import event
import logging
from tqdm import tqdm
import smtplib
import ssl
from time import sleep
def test():
for x in range(0, 4): # try 4 times
try:
df = pd.read_sql(sql='EXEC [prod].[spTest]', con=engine, )
str_error = None
except Exception as str_error:
print(str_error)
pass
if str_error:
sleep(2) # wait for 2 seconds before trying to fetch the data again
else:
break
print(df)
我得到的错误:
if str_error:
UnboundLocalError: local variable 'str_error' referenced before assignment
更新代码:
def test():
str_error = None
for x in range(0, 4): # try 4 times
try:
df = pd.read_sql(sql='EXEC [prod].[spTest]', con=engine, )
except Exception as str_error:
print(str_error)
if str_error:
sleep(2)
else:
break
print(df)
问题:不再循环 4 次。
【问题讨论】:
-
我实际上发现它很有趣,为什么即使在做了
except Exception as str_error之后还有NameError并询问了follow-up question 这个问题