执行失败的SQL:数据帧插入到PostgreSQL服务器

问题描述 投票:0回答:1

我尝试连接PostgreSQL服务器,并插入一些数据帧到一个表,这是我的代码

import datetime
import gzip
import logging
import os
import sys
import traceback
import numpy as np
import pandas as pd
import psycopg2
from pandas.io.sql import SQLTable, pandasSQL_builder
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
from sqlalchemy import create_engine

c = psycopg2.connect(database="dc_integration", user="mastername", 
host="integrationdb.c46zksctipg7.ap-southeast-1.rds.amazonaws.com", 
password="xxx")

d = {'project_key': [1, 2], 'project_name': [3, 4], 'update_date': 
['2016-06-22 19:10:28','2016-06-22 19:10:15']}
df = pd.DataFrame(data=d)
df.to_sql('project', con=c)

但是我得到这个错误

DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': relation "sqlite_master" does not exist
LINE 1: SELECT name FROM sqlite_master WHERE type='table' AND name=?...

但我可以从表中读取数据。我不知道它为什么失败。

postgresql pandas pandas-to-sql
1个回答
0
投票

我想你应该你SEARCH_PATH设为您的表所在的架构。

无论使用哪种:

ALTER USER username SET search_path = schema;

在PostgreSQL。

或设置psycorg2.connect的参数,你SEARCH_PATH:

search_path=schema

© www.soinside.com 2019 - 2024. All rights reserved.