【问题标题】:django sqlite3 URIs not supported不支持 django sqlite3 URI
【发布时间】:2018-02-26 22:38:27
【问题描述】:

奇怪的情况。 Django 2.x 的 sqlite3 驱动器特性开启了 uri 支持。这似乎只是在 python 3 中看到的一个问题。在使用旧版本 sqlite 的机器上,在我的例子中是 3.6.20,不支持 URI 的问题不会出现在完全相同的 virtualenv 和代码库中。在带有 sqtlite3 --version 的机器上显示 3.7.17 它确实出现了。有趣的是,根据我的阅读,该功能仅在 3.7.7 之后的 sqlite3 中受支持。所以显然 django 认为它是受支持的,但它真的不在 python 中内部 sqlite3 驱动程序的级别? (猜测)

在[3]中:sqlite3.version_info 出[3]: (2, 6, 0)

在[4]中:sqlite3.sqlite_version_info 出[4]: (3, 7, 17)

在它不工作的机器上,正如预期的那样,最后一行是 (3, 6, 20) 在它工作的机器上。

现在我无法完全控制这台机器。我想只是把较低的版本拉过来,但那里没有运气。即使您在命令行上运行 sqlite3,内部库也会确定实际版本。

我可以破解 django 驱动程序设置的相关部分,但即使我确实控制了生产和登台 virtualenvs,这也令人不快。

更令人抓狂的是,我什至没有使用 django 的 ORM 功能,因为该项目以自制但非常有效的方式直接保存到 mongo。但是 django 坚持要求一些内部应用程序检查 ORM 数据库连接,默认为 sqlite。我想我可以为此放入一个 mysql 数据库,但这也不是很令人满意。

如果我无法重新安装 sqlite3,是否有 django 设置或 django clean 方式来处理我没有想到的问题,或者有干净的方式来处理这个问题?

【问题讨论】:

  • 这会引发错误吗?如果是这样,请在问题中包含完整的异常消息和回溯。

标签: django sqlite


【解决方案1】:

在我的特殊情况下,我只是在 django 设置中设置了 DATABASES={},因为我没有在我的项目中使用 django ORM。

【讨论】:

  • 这并不总是有效,因为如果您运行测试,测试用例会尝试自行清理并尝试访问数据库,从而导致 ImproperlyConfigured 错误。
  • 有一个替代的测试超类用于构建不需要数据库的测试类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多