超集oracle配置

2024-05-14 13:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试配置superset(airbnb bi plataform),但当我试图配置一个新数据库以连接到oracle时,我遇到了问题, 超集将sqlalchemy用于db连接,我为connect定义tnsname并将其传递给Superset,如documentationhttp://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls oracle+cx_oracle://ifn:XXXXXX@DBDESA但是产生错误

(TypeError:应为无或字符串)

另外,我尝试用sqlalchemy做一个连接来测试连接

    Import sqlalchemy as sa
    Eng = sa.create_engine ('oracle + cx_oracle: // ifn: XXXXXX @ DBDESA')
    Eng.execute ('select 1 from dual') fetchall ()

但是我得到了同样的错误,还有其他需要的配置吗?对连接到oracle XE的编码或其他内容?或者超集配置中的其他参数?在

在Tnsnames.ora公司在

^{pr2}$

谢谢你的支持!在


Tags: 数据库dbsqlalchemy错误saengoraclesuperset
2条回答

我认为URI的语法可能是错误的。在

请参考以下示例,尝试设置URI

oracle+cx_oracle://dbname:password@ipaddress:port/?service_name=yourtnsname

例如:

^{pr2}$

尽管文档中说支持oracle,但是要使其正常工作,您将很难做到。在

例如:

  1. Superset假定数据库支持autoincrement,而oracle则不是这样。您需要在Oracle中创建所有序列,并在域类中添加对它们的引用。您必须在超集代码superset/models/core.py,以及迁移superset/migrations/*(查找创建表的每个地方)中执行此操作。在
  2. Oracle不支持超过30个字符的标识符(外键或列名)。你需要做一些重命名。在
  3. superset/migrations/env.py,之后:

^{pr 1}$

add a similar block for oracle as below:

^{pr 2}$

Notice that I removed the transaction_per_migration参数。你也可以在“中使用equals代替:)

  1. 论方言site-packages/sqlalchemy/dialects/oracle/base.px 添加“rows”作为保留字./base.py:360:RESERVED_WORDS

  2. 每次您想升级超集时都要这样做。

  3. 放弃这个烂摊子,使用Mysql

相关问题 更多 >

    热门问题