2013-03-13 66 views
4

我运行python33的,我已经安装了pymysql3但我需要什么ENGINE指定在Django的设置:什么是pymysql3相当于django.db.backends.mysql

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'chris_test',      # Or path to database file if using sqlite3. 
     # The following settings are not used with sqlite3: 
     'USER': 'some_user', 
     'PASSWORD': 'some password', 
     'HOST': 'some_host',      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
     'PORT': '3306',      # Set to empty string for default. 
    } 
} 
+0

是否有一个原因,标准的'django.db.backends.mysql'不能使用?为什么你需要Django来使用PyMySQL? – voithos 2013-03-13 19:26:29

+0

因为我不能在我的Windows机器上安装MySQLdb,因为不兼容的行为和奇怪的概念(至少对Windows用户),我应该必须安装一个C编译器,以便我可以使用一种语言这应该是更容易。 – 2013-03-13 19:39:40

+0

需要C编译器来编译Python扩展。在Python中工作很简单,很棒 - 但并不总是很快。对于像数据库客户端那样(据称)至关重要的事情,您希望它尽可能快。 – voithos 2013-03-13 20:00:58

回答

1

的Django已经提供了一个MySQL后端。从查看PyMySQL看来,它似乎是一个通用的MySQL客户端。您不能任意使用不同的库来替代现有的Django后端;这些API将完全不兼容。

有,似乎provide a Django backend that uses PyMySQL internally项目,但笔者认为,它对实验,它一共有5次提交的,并且它没有被自2012年更新,所以我不建议尝试用它。

+0

感谢您的澄清......但正如你可能从上面的评论中看到的,我真的想做的是找到一种方法,因为Django抱怨我没有MySQLsb,但试图安装它只是抱怨各种的问题,我找不到MySQLdb的安装程序,它实际上适用于64位风格的Python33。 – 2013-03-13 19:42:34

+0

看看[这个答案](http://stackoverflow.com/a/13324014/716118)。它可能有一些建议。就目前而言,MySQLdb与Python 3不兼容,所以如果你想坚持使用Python 3,你将不得不使用不同的方法。 – voithos 2013-03-13 20:07:20

+0

这个“答案”是非常无益的。它不回答这个问题。我尝试使用Django提供的MySQL后端,但发现那种不支持Python 3的难题。其他选择还有其他问题。 – 2014-12-18 00:51:40

3

查看django-mysql-pymysql了解更多信息。具体而言,

'ENGINE': 'mysql_pymysql', 

虽然这还不够。我不得不使用this answer。如果你有一个foo Django应用程序,然后在你的`富/ 初始化的.py”,添加以下内容:

import pymysql 
pymysql.install_as_MySQLdb() 
+0

虽然我不确定是否需要'django-mysql-pymysql'(自2012年以来未维护),这看起来似乎是正确的事情。从我所知道的情况来看,你应该能够遵循你指出的答案中的指示。 – voithos 2014-12-18 02:38:31

+1

PyMySQL不是我的第一选择,但我已经开始使用Python 3,现在需要一个解决方案。我有点骇然的是,MySQL的生态系统还没有准备好为Python 3 – 2014-12-18 02:40:33

+0

几年现在这个问题不解决。看起来像python 3只是不做MySQL(反之亦然)。我用这个电话安装pymysql为MySQLdb的,而且它发现它,然后barfs失踪“不能导入名称‘Thing2Literal’”。有修复,但它确实看起来像很好'我的MySQL已经死了。 – 2016-06-12 05:54:40