Django中的熊猫to_sql

时间:2018-12-30 12:43:38

标签: django pandas

我正在尝试使用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中选择名称,其中type ='table'AND name =?...

我认为这是因为Django连接对象不是sqlalchemy对象,因此Pandas假定我正在使用sqlite。除了与数据库建立另一个连接外,还有什么方法可以使用.to_sql?

1 个答案:

答案 0 :(得分:0)

可以在setting.py文件中创建数据库配置

<%
ResultSet rs = stmt.executeQuery("select videos from your_table")
rs.next();
InputStream istr = rs.getBlob("videos").getBinaryStream();
Object obj = new ObjectInputStream(istr).readObject();
String strObjClass = obj.getClass().getName();
out.println("Retrieved object " + obj + " of the class " + strObjClass);
%>

如果要创建sql_alchemy连接,则应使用DB_URI_DEFAULT或DB_URI_OTHER

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

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')

当您使用熊猫的.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()