【问题标题】:Model field types for Django 1.8.2 models that will work with MySQL database tables适用于 MySQL 数据库表的 Django 1.8.2 模型的模型字段类型
【发布时间】:2015-08-08 15:59:32
【问题描述】:

假设我有下表显示了如何为 MySQL 表声明列:(我想不出一个非常现实的例子,所以这里有一些非常愚蠢的东西。这个表是在 Excel 的帮助下创建的)

我想在 Django 中创建一个模型,该模型与我将拥有的 MySQL 表与以这种方式声明的列兼容。但是,通过查看Django文档,除了主键字段之外,我找不到任何在SQL中与图片中的格式相同的模型字段类型。

我之前确实看到默认情况下,Django 处理使用 SQLite 引擎的数据库,但我想看看是否可以处理 MySQL 表的数据库。

有没有办法创建与通过 MySQL 创建的表兼容的 Django 模型字段类型,如 MEDIUMINT、TINYTEXT 和 SMALLINT(在 MySQL 中)?这只是我使用的一种方式我自己创建的表,而不是定义完所有模型后 Django 自动生成的表。

【问题讨论】:

  • Django 与数据库无关。它的所有核心字段都与所有数据库兼容。您的示例中没有特定于 MySQL 的内容。
  • 我怎样才能做到这一点?比如,我如何声明一个 CharField,比如说,当我迁移应用程序时,它会创建一个 TINYTEXT 类型的列?
  • 你为什么在乎?为什么字段必须是那种类型?为什么不直接创建一个 TextField?
  • 那是因为我不想更改列的声明。如果我事先没有意识到我可以创建自定义字段,请原谅;另一方面,我能否创建与那些 MySQL 列具有相同数据类型的字段? (否则,我想看看我是否可以使用 Django 定义的模型字段来保存 MySQL 表上的数据。我想使用 TINYTEXT 而不是 TEXT 来节省空间。)
  • 我不熟悉创建使用我之前已经创建的 MySQL 表的 Django 模型。

标签: python mysql sql django database


【解决方案1】:

在 Django 中,您通常会创建模型并让框架为您生成表格。如果您有旧数据库,您可以使用python manage.py inspectdb 从数据库生成模型(请参阅documentation)。但是,如果它不是一个遗留数据库并且您刚刚创建了它,那么您就是在与框架作斗争并使您的生活变得更加复杂。

【讨论】:

  • 让我试一试。
  • 好的,看来我还不能尝试这个,因为我缺少的是一个名为“mysqldb”的 Python 模块。我想我稍后会试试这个;我确实遇到了可以下载它的东西,只是它的文件类型为 .whl,我不确定它是什么。
  • 一个简单的安装方法是使用 pip。看到这个问题:How to install Python MySQLdb module using pip?.
  • 我做了不同的事情,在做了一些事情之后,我终于明白了!稍后我将不得不解释。我现在有点忙于为模型编写代码。
猜你喜欢
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 2016-08-11
相关资源
最近更新 更多