【问题标题】:Pandas to_sql in djangodjango 中的 Pandas to_sql
【发布时间】:2018-12-30 12:43:38
【问题描述】:

我正在尝试使用 Django 的 db 连接变量将 pandas 数据帧插入 Postgres 数据库。我使用的代码是

df.to_sql('forecast',connection,if_exists='append',index=False)

我收到以下错误

在 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;'上执行失败:关系“sqlite_master”不存在 第 1 行:从 sqlite_master 选择名称 WHERE type='table' AND name=?...

我认为这是因为 Django 连接对象不是 sqlalchemy 对象,因此 Pandas 假设我使用的是 sqlite。除了与数据库建立另一个连接之外,还有其他方法可以使用 .to_sql 吗?

【问题讨论】:

  • 你的连接字符串是什么?

标签: django pandas


【解决方案1】:

可以在setting.py文件中创建db配置

DATABASES = {
    'default': env.db('DATABASE_URL_DEFAULT'),
    'other': env.db('DATABASE_URL_OTHER')
}
DB_URI_DEFAULT=env.str('DATABASE_URL_DEFAULT')
DB_URI_OTHER=env.str('DATABASE_URL_OTHER')

如果你想创建 sql_alchemy 连接,你应该使用 DB_URI_DEFAULT 或 DB_URI_OTHER

在类的 init 方法中你将使用你应该编写的 .to_sql 方法

from you_project_app import settings
from sqlalchemy import create_engine
import pandas as pd

class Example:

 def __init__(self):
        self.conn_default = create_engine(settings.DB_URI_DEFAULT).connect()

当你使用 pandas 的 .to_sql 方法时,它应该是这样的:

df_insert.to_sql(table, if_exists='append',index=False,con=self.conn_default)

【讨论】:

猜你喜欢
  • 2020-12-01
  • 2018-04-09
  • 2017-05-24
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2021-05-02
相关资源
最近更新 更多