연습에서 필자는 API에서 데이터를 가져 와서 psql 데이터베이스에 삽입합니다. 초기 당당 1000 항목의 기본 제한을 따르고 있었지만 약 40K 행인 모든 데이터를 가져 오려고했습니다. 실험 조금 후에, 나는 4800을 뽑을 수 있지만, 나는 다음과 같은 얻을 : 내가 검토 한Python KeyError : peewee를 사용하는 insert_many()
import peewee
psql_db = peewee.PostgresqlDatabase('database', user='my_username')
class Bike_Count(peewee.Model):
date = peewee.DateTimeField()
fremont_bridge_sb = peewee.IntegerField()
fremont_bridge_nb = peewee.IntegerField()
class Meta:
database = psql_db
Traceback (most recent call last):
File "data_pull.py", line 19, in <module>
postgres_db.Bike_Count.insert_many(data).execute()
File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3516, in execute
cursor = self._execute()
File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 2901, in _execute
sql, params = self.sql()
File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 3484, in sql
return self.compiler().generate_insert(self)
File "/usr/local/lib/python3.5/dist-packages/peewee.py", line 2084, in generate_insert
value = row_dict[field]
KeyError: <peewee.IntegerField object at 0x7f5b32c2c7f0>
data_pull.py
import json, requests, peewee
import postgres_db
endpoint = 'https://data.seattle.gov/resource/4xy5-26gy.json?$limit=4800'
response = requests.get(endpoint, headers={'X-App-Token': '(REMOVED)'})
if response.status_code == 200:
data = json.loads(response.text)
postgres_db.Bike_Count.create_table(True)
postgres_db.Bike_Count.insert_many(data).execute()
postgres_db.py 거기에 항목이있는 문제가 있다고 생각하는 온라인 테이블이 있지만 나는 아무것도 발견 할 수 없습니다. 도와 주셔서 감사합니다. 나는 (토큰과 4800 제한 응용 프로그램을 제거) 로컬 코드를 시도하고 예상대로 일
필요에 따라 서식을 지정하지 않고 응답 데이터 문자열을 테이블에 직접 삽입하는 방법은 무엇입니까? 응답이 datetime 값과 두 개의 정수가있는 목록을 반환하도록 보장됩니까? – wave5459
필요에 따라 서식을 지정한다는 것은 무엇을 의미합니까? 제 생각에 json.loads()는 객체를 반환하고 있습니다.이 경우 객체는 사전 목록입니다. API 문서에 따르면 필드는 날짜/시간 필드와 두 개의 숫자 필드입니다. ~ 4800 행까지의 테이블을 얻을 수있는 이상한 일이며 오류가 발생합니다. –
다음은 데이터 세트의 정보에 대한 링크입니다. https : //data.seattle.gov/Transportation/Fremont-Bridge-Hourly-Bicycle-Counts-by-Month-Octo/65db-xm6k –