【问题标题】:Writing to PostgreSQL database in Python with SQLalchemy使用 SQLalchemy 在 Python 中写入 PostgreSQL 数据库
【发布时间】:2021-07-11 03:00:20
【问题描述】:

我正在尝试在我的 google Colab 笔记本中使用 Python 写入我的 postgres 数据库,但是当我尝试使用 pandas“to_sql”函数时出现此错误。

这是代码:(这部分没有错误)

import pandas as pd
import sqlalchemy
from sqlalchemy import create_engine
import psycopg2

conn= psycopg2.connect(
    host = "hostIP",
    dbname = "dbname", 
    user="postgres",
    password="pass"
)
df = pd.read_csv("https://data.messari.io/api/v1/assets/btc/metrics/price/time-series?start=2021-01-01&end=2021-02-02&interval=1d&format=csv")

df['timestamp'] = pd.to_datetime(df['timestamp'], format='%Y-%m-%d').dt.strftime('%Y-%m-%d')
df['timestamp'].astype(str)

engine = create_engine("postgresql+psycopg2://postgres:pass@host/dbname")

当我尝试运行 to.sql 时出现错误(函数如下):

df.to_sql('dbname', con=engine, if_exists='append', index = False)

TypeError
/usr/local/lib/python3.7/dist-packages/sqlalchemy/dialects/postgresql/psycopg2.py in do_executemany(self, cursor, statement, parameters, context)
    907                 template=executemany_values,
    908                 fetch=bool(context.compiled.returning),
--> 909                 **kwargs
    910             )
    911 

TypeError: execute_values() got an unexpected keyword argument 'fetch'

我能够成功连接到 postgres 实例,并且在创建我的“引擎”变量后没有收到任何错误。

我尝试上传的 pandas 数据框中的数据类型是:

timestamp     object
open         float64
high         float64
low          float64
close        float64
volume       float64
dtype: object

我认为这可能是时间戳列数据类型的问题,但我不确定在 Postgres 中应该设置什么等价物。

【问题讨论】:

  • 你是如何为这个环境安装包的?看起来您的 psycopg2pandas 版本不兼容,请尝试卸载并使用 conda 重新安装
  • Google Colab 处理版本控制,所以我没有安装任何东西,我只是使用了导入命令。
  • 啊,好的。在那种情况下,我不确定。
  • 为了更好地解决您的问题,您能否分享您的代码以及完整的日志错误?
  • 已更新完整代码

标签: python pandas postgresql sqlalchemy google-colaboratory


【解决方案1】:

如果您从 pandas df.to_sql 获得“意外的参数提取”,

添加方法 = 'multi'

df.to_sql('dbname', con=engine, if_exists='append', index = False, method = 'multi')

【讨论】:

    猜你喜欢
    • 2011-05-30
    • 2018-11-29
    • 2013-04-18
    • 1970-01-01
    • 2015-08-18
    • 2015-06-13
    • 2010-12-03
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多