我正在尝试使用 Django 的 db 连接变量将 Pandas 数据框插入到 Postgres 数据库中。我使用的代码是
df.to_sql('forecast',connection,if_exists='append',index=False)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;' 执行失败:关系“sqlite_master”不存在第 1 行:SELECT name FROM sqlite_master WHERE type='table' AND name=?...
我认为这是因为 Django 连接对象不是 sqlalchemy 对象,因此 Pandas 假设我使用的是 sqlite。除了与数据库建立另一个连接之外,还有什么方法可以使用 .to_sql 吗?
可以在setting.py文件中创建数据库配置
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')
Run Code Online (Sandbox Code Playgroud)
如果你想创建 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()
Run Code Online (Sandbox Code Playgroud)
当你使用 pandas 的 .to_sql 方法时,它应该是这样的:
df_insert.to_sql(table, if_exists='append',index=False,con=self.conn_default)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |