【问题标题】:How to connect superset with mysql database?如何将超集与mysql数据库连接?
【发布时间】:2020-07-28 01:42:25
【问题描述】:

我试图用这个 SQLAlchemy URI:mysql://localhost:3306/mysql/database/table1 将超集与 mysql 数据库连接,但无法连接。

我收到了这个错误:

ERROR: {"error": "Connection failed!

The error message returned was:
No module named 'MySQLdb'", "stacktrace": "Traceback (most recent call last):
  File \"/Users/akay/venv/lib/python3.7/site-packages/superset/views/core.py\", line 1703, in testconn
    engine = database.get_sqla_engine(user_name=username)
  File \"/Users/akay/venv/lib/python3.7/site-packages/superset/utils/core.py\", line 131, in __call__
    value = self.func(*args, **kwargs)
  File \"/Users/akay/venv/lib/python3.7/site-packages/superset/models/core.py\", line 923, in get_sqla_engine
    return create_engine(url, **params)
  File \"/Users/akay/venv/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py\", line 479, in create_engine
    return strategy.create(*args, **kwargs)
  File \"/Users/akay/venv/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py\", line 87, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File \"/Users/arkay/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py\", line 118, in dbapi
    return __import__(\"MySQLdb\")
    ModuleNotFoundError: No module named 'MySQLdb'
"}

【问题讨论】:

  • 有没有正确的方式连接mysql数据库?

标签: mysql sqlalchemy apache-superset superset


【解决方案1】:

MySQLdb 不兼容 Python 3,需要使用 pymysql。

安装 pymysql:

$ pip install pymysql

使用以下 URI 字符串连接到 mysql 数据源。

mysql+pymysql://user:pass@host/databasename

【讨论】:

    【解决方案2】:

    使用 hostname=localhost 配置您的数据库用户

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    【解决方案3】:

    需要安装mysql-connector-python模块:

    $ pip install mysql-connector-python
    

    【讨论】:

      【解决方案4】:

      有类似的问题。我相信这会为你们中的一些人节省时间:

      使用127.0.0.1 代替localhost

      这是 MySQL 字符串的完美模板:

      SQLALCHEMY_DATABASE_URI = 'mysql://username:password@127.0.0.1:3306/schema-name'
      

      安装 MySQL:

      pip3 install mysqlclient 
      

      升级 SQLAlchemy:

      pip install sqlalchemy==1.3.24
      

      加载数据库:

      superset db upgrade
      

      创建管理员用户:

      superset fab create-admin
      

      【讨论】:

        【解决方案5】:

        如果您使用 Docker,请尝试使用 host.docker.internal 作为主机名。它对我有用

        【讨论】:

          猜你喜欢
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 2015-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-13
          • 2019-10-09
          相关资源
          最近更新 更多