当for
采用字符串格式时,我想创建一个variable
循环。
我的代码是:
for i in range(1,32):
DEP_RATE = pd.read_sql_query('select DAYNUM,YYYYMM,sum(DEP_RATE) from ASPM.aspm_qtr where LOCID="ABQ" and DAYNUM = i:"{i}" group by YYYYMM',{i:str(i)},rconn)
错误是:
'dict'对象没有属性'cursor'
我使用了这段代码:
for i in range(1,32):
DEP_RATE = pd.read_sql_query('select DAYNUM,YYYYMM,sum(DEP_RATE) from ASPM.aspm_qtr where LOCID="ABQ" and DAYNUM = "i" group by YYYYMM',rconn, params={i:str(i)})
它没有错误但不起作用。问题是:
("Truncated incorrect DOUBLE value: 'i'")
答案 0 :(得分:0)
这似乎是一个PANDAS问题,是吗?我认为这与read_sql_query API的论点不匹配。功能签名是:
pandas.read_sql_query(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, chunksize=None)
大致说前两个位置参数是必需的,其他一切都是默认的或可选的。
为了使其更加明显,请考虑将核心SQL字符串放在单独的行中:
sql = 'SELECT daynum, ... AND daynum = :i'
for i in range(1, 32):
DEP_RATE = pd.read_sql_query(sql, {i: str(i)}, rconn)
使用这个公式,你的参数与API不匹配更明显:你的第二个参数是关闭的。也许你想要(注意额外的关键字参数params
):
DEP_RATE = pd.read_sql_query(sql, rconn, params={i: str(i)})
答案 1 :(得分:0)
我更正了代码。正确答案是:
DEP_RATE = list(np.zeros((1,1)))*31
for i in range(1,32):
DEP_RATE[i-1] =np.array(pd.read_sql_query('select DAYNUM,YYYYMM,sum(DEP_RATE) from ASPM.aspm_qtr where LOCID="ABQ" and DAYNUM = '+str(i)+' group by YYYYMM;',rconn, params={i:str(i)}))