我正在查询历史数据库,结果表应该有大约144k行,但是我将结果限制为10万行。使用ODBC连接到同一数据库但使用VBA .NET应用程序时,我似乎已经出现了此问题。
我在DB SQL客户端中测试了相同的查询,它返回正确的行数。唯一看起来令人怀疑的是,该客户端对其接口上显示的行数有限制,默认值为100k。
import pypyodbc as pyodbc
import pandas as pd
import gc
import time
def GetTrend(tags,server,t_ini,t_end,period):
IP21_connection = 'DRIVER={{AspenTech SQLplus}};HOST={};PORT=10014'
IP21_Query = """select ts,avg from aggregates where name = '{}'
and ts between '{}' and '{}'
and period = 10*{}"""
conn = pyodbc.connect(IP21_connection.format(server))
cur = conn.cursor()
df2=pd.DataFrame()
i=0
for tag in tags:
cur.execute(IP21_Query.format(tag,t_ini,t_end,period))
df = pd.DataFrame(cur.fetchall(),columns=['ts',tag])
df['ts'] = pd.to_datetime(df['ts'])
df1=df.set_index('ts')
df2=pd.concat([df2,df1],axis=1)
i+=1
print('{} - {} of {} tags'
' collected'.format(time.asctime(time.localtime()), i,
len(tags)), flush=True)
gc.collect()
在查询数据库的这段时间内,我希望有144k行,但我只能得到10万行。