Python 用pandas(数据帧)中的另一个数据覆盖一个数据
定期(每120秒)获取数据,但最近的数据会覆盖SQL DB中以前的数据。我希望保存所有数据。此外,计时器是否正确Python 用pandas(数据帧)中的另一个数据覆盖一个数据,python,pandas,postgresql,dataframe,timer,Python,Pandas,Postgresql,Dataframe,Timer,定期(每120秒)获取数据,但最近的数据会覆盖SQL DB中以前的数据。我希望保存所有数据。此外,计时器是否正确 import sqlalchemy as sa import psycopg2 import requests as rq import pandas as pd import json import time start_time = time.time() while True: temp = pd.DataFrame() df = pd.DataFrame()
import sqlalchemy as sa
import psycopg2
import requests as rq
import pandas as pd
import json
import time
start_time = time.time()
while True:
temp = pd.DataFrame()
df = pd.DataFrame()
vehicleList = {"SN63NBK", "YY67UTP"}
for ids in vehicleList:
r = rq.get('https://api.tfl.gov.uk/Vehicle/' + ids + '/Arrivals')
r = r.text
temp = pd.read_json(r)
temp['Type'] = 'ids'
df = pd.concat([df, temp], sort=False).reset_index(drop=True)
engine = sa.create_engine('postgresql+psycopg2://postgres:3434@127.0.0.1/postgres')
df['timing'] = list(map(lambda x: json.dumps(x), df['timing']))
df.to_sql('tfl_bus_pg6', engine, if_exists='replace', index=False)
time.sleep(120.0 - ((time.time() - start_time) % 120.0))
我稍微更改了您的代码,但我认为主要问题在于
if_存在
参数,您应该将该参数设置为append
,正如@K753在评论中提到的那样
另外,YY67UTP
id不返回任何内容,因此我用站点中的另一个随机id替换它,以说明代码是如何工作的
def数据发生器(车辆):
“”“为每个请求生成一个数据帧”“”
对于车辆中的ID:
时间。睡眠(1)
r=rq.get('https://api.tfl.gov.uk/Vehicle/“+ids+”/Arrivals')
temp=pd.read\u json(r.text)
temp['Type']=id
屈服温度
尽管如此:
#如果需要,如何打破while循环?
车辆列表={“SN63NBK”,“YY67UTP”}
df=pd.concat(_data_gen(车辆列表),sort=False,ignore_index=True)
engine=sa.create_engine('postgresql+psycopg2://postgres:3434@127.0.0.1/博士后’)
df['timing']=list(映射(lambda x:json.dumps(x),df['timing']))
df.to_sql('tfl_总线_pg6',引擎,如果存在='append',index=False)
时间。睡眠(120)
我稍微更改了您的代码,但我认为主要问题在于如果存在
参数,您应该将该参数设置为append
,正如@K753在评论中提到的那样
另外,YY67UTP
id不返回任何内容,因此我用站点中的另一个随机id替换它,以说明代码是如何工作的
def数据发生器(车辆):
“”“为每个请求生成一个数据帧”“”
对于车辆中的ID:
时间。睡眠(1)
r=rq.get('https://api.tfl.gov.uk/Vehicle/“+ids+”/Arrivals')
temp=pd.read\u json(r.text)
temp['Type']=id
屈服温度
尽管如此:
#如果需要,如何打破while循环?
车辆列表={“SN63NBK”,“YY67UTP”}
df=pd.concat(_data_gen(车辆列表),sort=False,ignore_index=True)
engine=sa.create_engine('postgresql+psycopg2://postgres:3434@127.0.0.1/博士后’)
df['timing']=list(映射(lambda x:json.dumps(x),df['timing']))
df.to_sql('tfl_总线_pg6',引擎,如果存在='append',index=False)
时间。睡眠(120)
SQL数据库中的数据是否被覆盖?如果是这样,您可以尝试If_exists='append'
您试图使用YY67UTP
id访问的文件不包含任何内容info@K753如果存在,则class='append'完成!。thx.SQL数据库中的数据是否被覆盖?如果是这样,您可以尝试If_exists='append'
您试图使用YY67UTP
id访问的文件不包含任何内容info@K753如果存在,则class='append'完成!。thx.发生了这种情况(如果_exists='append')。非常感谢。我尝试了你的代码,但这是错误的:sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)@istanbul34这很奇怪,因为我保留了你关于引擎和的代码。很好,它可以与append
一起使用,但不会发生这种情况(如果_exists='append')。非常感谢。我尝试了你的代码,但这是错误的:sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)@istanbul34这很奇怪,因为我保留了你关于引擎和的代码。很好,它可以与append
一起使用