vertica / sqlalchemy - 模式公共的权限被拒绝

时间:2015-05-26 23:22:09

标签: python sql sqlalchemy vertica

我能够按如下方式生成引擎:

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网址中指定我想要的架构?

1 个答案:

答案 0 :(得分:2)

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

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