【问题标题】:vertica/sqlalchemy - Permission denied for schema publicvertica/sqlalchemy - 模式公共的权限被拒绝
【发布时间】:2015-05-28 01:54:30
【问题描述】:

我能够生成如下引擎:

import pandas as pd
import sqlalchemy as sa
url = sa.url.URL(drivername='vertica+pyodbc',
    username='username',
    password='****',
    host='vertica')
engine = sa.create_engine(url)

我可以读取数据,例如

pd.read_sql_query("SELECT * FROM my_schema.tablename", engine)

但是当我尝试写入数据时:

import numpy as np
df = pd.DataFrame(np.random.randn(10, 5))
df.to_sql("my_schema.random_table", engine)

我得到了错误

公共架构的权限被拒绝\n (4367) (SQLExecDirectW)') u'\nCREATE TABLE "my_schema.random_table"

我认为问题在于“my_schema.random_table”被引号括起来,这使 Vertica 认为我想在基本(公共)架构而不是 my_schema 中创建此表。有没有办法可以在 ODBC url 中指定我想要的架构?

【问题讨论】:

  • 您可以尝试将搜索路径设置为架构(SET SEARCH_PATH TO my_schema;),然后执行CREATE

标签: python sql sqlalchemy vertica


【解决方案1】:

pandas.DataFrame.to_sql 有一个schema 参数。尝试使用它而不是将架构指定为表名的前缀。

df.to_sql('random_table', engine, schema='my_schema')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2018-03-11
    • 2019-11-24
    • 2014-11-08
    • 2012-01-18
    • 2012-04-25
    相关资源
    最近更新 更多