使用SQLalchemy在特定表空间中创建表

时间:2019-11-29 11:15:03

标签: python oracle sqlalchemy

我可以使用原始查询在表空间中创建新表:

engine = sqlalchemy.engine.create_engine(ENGINE_PATH_DDS, encoding="utf-8")
connection = engine.connect()
conn = engine.raw_connection()
cur = conn.cursor()
sql = """
        CREATE TABLE {schema}.{table_name}
        (
            ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
            STATUS NVARCHAR2(32) NOT NULL,
            DESCR NVARCHAR2(256) DEFAULT NULL
        )
        TABLESPACE SOME_TABLESPACE
        """.format(table_name = table_name, schema = SCHEMA)
    cur.execute(sql)

所有具有特权的用户都可以访问创建的表。但是,如果没有 raw_connection ,该如何做同样的事情?使用这种方法:

metadata = MetaData(engine)
table = Table('Example',metadata,
              Column('id',Integer, primary_key=True),
              Column('status',String))
metadata.create_all()

如何为新表指定tablepase?

这种代码有效:

df = pd.DataFrame(columns=['id', 'status', 'descr']) # pandas data frame
df.to_sql(con=connection, name=tbl, schema=SCHEMA, index=False, dtype=data_types, if_exists='replace')

但是在尝试插入任何我得到的数据时:

ORA-01950: no privileges on tablespace 'USERS'

0 个答案:

没有答案