vertica/sqlalchemy - 模式权限被拒绝 public

vertica/sqlalchemy - Permission denied for schema public

我能够生成如下引擎:

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)

我收到错误

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

我认为问题在于 "my_schema.random_table" 被引号括起来,使 Vertica 认为我想在基础 (public) 模式中创建此 table 而不是 my_schema。有没有一种方法可以在 ODBC url 中指定我想要的模式?

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

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