将Response类型更改为str,bytes或os.Pathlike

时间:2019-05-17 05:09:37

标签: python beautifulsoup python-requests psycopg2

我正在尝试自动将csv文件下载/复制到postgres数据库中,并使用此kaggle一个作为示例。 我遇到对象类型的问题,当前它是一个响应,我想使其生效。

我一直在尝试使用shutil和复制文件,但到目前为止进展不大。

步骤1导入库和设置连接

import psycopg2
import requests
import csv
import os

conn = psycopg2.connect(....)
cur = conn.cursor

步骤2在数据库中创建表

cur.execute("""
CREATE TABLE real_estate_data(
id integer PRIMARY KEY,
data DATE,
rentorbuy VARCHAR(255),
location VARCHAR(255),
address VARCHAR(255),
zipcode VARCHAR(255),
description VARCHAR(255),
type VARCHAR(255),
nbofrooms DECIMAL(3,2),
surace VARCHAR(255),
floor INT,
price VARCHAR(255),
source VARCHAR(255))
""")

步骤3。使用请求从网址中获取csv,然后从表格中复制该数据(在这种情况下为房地产数据)

url = 'https://www.kaggle.com/fredgirod/web-crawler-for-real-estate- 
market/downloads/Output.csv/3'
onlinedata = requests.get(url, verify =False)
onlinedata.raise_for_status()

with open(onlinedata, 'r') as f:
    next(f)
    cur.copy_from(f,'real_estate_data',sep=',')

conn.commit()

TypeError:预期的str,字节或os.PathLike对象,而不是Response

1 个答案:

答案 0 :(得分:0)

您需要阅读onlinedata.text

with open(onlinedata.text, 'r') as f:
    next(f)
    cur.copy_from(f,'real_estate_data',sep=',')