Django + mysql

django 支持 MySQL 5.5及以上版本。

Django的inspectdb功能使用information_schema, 其中包含所有的数据库schema的详细数据。

Django期望数据库支持Unicode(UTF-8编码)。

直到MySQL5.5.4为止,MySQL的默认引擎都是MyISAM。MyISAM的主要缺点是不支持事务(transactions)或者强制性的外键限制。另一方面,直到MySQL5.6.4,MyISAM是唯一支持全表索引和查找的。

MySQL5.5.5时,默认存储引擎换成了InnoDB.它是支持事务和外键的。在这一点上,它可能是最好的。但是,InnoDB会在mysql
重启之后丢失AUTO_INCREMENT值,而不是重新创建一个max(id)+1。这可能会导致AutoField的值的误用。

如果将现有的project升级至MySQL5.5.5,随后添加一些表,确保你的表使用相同的存储引擎(i.e. MyISAM vs InnoDB)。特别的是:如果几个表有一个ForeignKey,而它们之间用的是不同的存储引擎,那么就会报个下面的错务:

_mysql_exceptions.OperationalError: (
    1005, "Can't create table '\\db_name\\.#sql-4a8_ab' (errno: 150)" )

MySQL DB API Drivers

  • MySQLdb
  • mysqlclient
  • MySQL Connector/Python

目前只有MySQLdb支持Python3(2016.01.21)

你可能感兴趣的:(mysql,django)