【问题标题】:Windows / Linux SQLAlchemy connector Conversion type ErrorWindows / Linux SQLAlchemy 连接器转换类型错误
【发布时间】:2021-04-30 02:00:12
【问题描述】:

我一直在使用 SQLAlchemy 处理 MySQL 数据库的项目。我已经在我的 Windows 机器上完成了所有测试。当我将项目移动到 Ubuntu 服务器 20.04 时,问题就出现了。我收到以下错误:Python 'float64' cannot be converted to a MySQL type。做一些研究我发现this 类似的情况。建议只是使用int()float() 来显式转换数字。但是仍然存在一个问题:为什么它应该在 Windows 上运行而不是在 Linux 上运行?

做更多的研究我发现这可能是连接器的问题,这在 Windows 和 Linux 中是不一样的。实际上我之前遇到了一些问题,因为在 Windows 中我实例化了引擎:db_config = 'mysql://{}:{}@localhost/{}?charset=utf8mb4'.format(db_user, db_pass, db_schema),这是只指定方言而不是连接器。在 Linux 中,仅当我同时指定两者时才有效:db_config = 'mysql+mysqlconnector://{}:{}@localhost/{}?charset=utf8mb4'.format(db_user, db_pass, db_schema)

在 Windows 上,我将连接器 PyMySQLXampp 7.1.9 和 DB 10.1.26-MariaDB 与引擎 InnoDB 一起使用。在 Linux 上,我使用连接器 mysqlconnector 和服务器 MySQL 8.0.22-0ubuntu0.20.04.3 以及引擎 InnoDB。值得一提的是,我只有在 DB 上写入 float64 时才会遇到麻烦。

所以,经过这么长的介绍(对不起),具体问题是:

  1. 实际上是连接器的问题吗?还是我在这里遗漏了什么?
  2. 有没有办法在 Windows 中使用与在 Linux 中相同的代码? (可能只在 Linux 上添加方言和连接器)
  3. 我是否应该从现在开始对所有内容进行编程,每次将浮点数写入数据库时​​都指定转换 float()

欢迎提供任何有关这些问题的线索。

【问题讨论】:

  • 了解您在每个平台上使用的连接器和版本会有所帮助。数据库引擎也是如此。
  • @snakecharmerb 你完全正确。我编辑了。

标签: python mysql linux sqlalchemy mysql-connector


【解决方案1】:

感谢@snakecharmerb,我意识到我只需要使用相同的连接器。所以一切都可以通过在 Linux 上使用来解决:mysql+pymysql://{}:{}@localhost/{}?charset=utf8mb4'.format(db_user, db_pass, db_schema)。也就是说,使用连接器 PyMySQL 而不是 mysqlconnector

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多