在Azure网站上创建一个使用数据库的Django应用程序是否可行?

3
这听起来很简单,但我已经尝试了几天,并且遇到了瓶颈。下面列出了我的尝试,所有情况在本地运行时都完美无缺,但一旦部署到Azure上就会崩溃。请注意,我使用的是Azure网站而不是VM(主要是因为成本影响 - 我知道使用VM很可能会解决问题)。我发现使其工作的唯一方法是使用在项目中部署的sqlite数据库。
尝试过的事情:
1)使用Azure合作伙伴clearDB创建MySQL数据库。'manage.py syncdb'正常工作,可以使用'manage.py runserver'在本地运行并使用该站点。部署到Azure后,Python-MySqlDb的未解决导入失败。
2)创建SQLAzure数据库并使用django-pyodbc-azure从django进行连接。同样,syncdb / runserver在本地工作正常,在Azure上部署会导致dbapi模块的未解决导入。
3)使用sqllite3作为db引擎-在两种情况下都能正常工作,但没有冗余和(表面上)较慢的数据访问。
在查看有关在Azure网站上部署Django应用程序的教程时,它们都没有详细介绍数据库,只停留在创建Hello World!页面的点上。我参考了这个链接this和这个链接this
我们正在尝试部署的网站正在运行保留实例。我已经尝试了Django 1.4和1.5。我使用virtualenv / pip来确保所有依赖项都包含在我正在部署的site-packages中,所有这些都包含在git存储库中。还通过FTP进入以验证是否上传了所有必需的文件。
肯定有一种正确设置这个的方式吧?如果没有,那么将Django作为Azure网站的功能似乎完全没有意义。
非常感谢任何帮助!
编辑
来自clearDB解决方案的Azure错误日志的回溯:
      File "D:\home\site\wwwroot\site-packages\django\utils\importlib.py", line 35, in import_module
    __import__(name)
  File "D:\home\site\wwwroot\site-packages\django\db\backends\mysql\base.py", line 17, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
ErrorCode   Access is denied.
 (0x5)
2个回答

1
我在Azure上使用Django和MySQL。MySQLdb模块不仅包含MySQLdb目录,还包括4个以_mysql...开头的特定于平台的文件。 确保在推送到Azure时包含这些文件。 如果不这样做,您的Django项目将在本地工作但远程无法正常工作。 您不需要使用纯Python MySQL适配器。
这是一个指南:如何免费在Azure上托管您的Django应用程序

0

已解决 - 有点:

使用纯Python MySQL驱动程序可以解决问题(我有点猜到这可能是由于Azure环境限制引起的)

供以后参考 - 这个项目为我解决了所有问题:

https://github.com/jloic/django-mysql-pymysql

注意:Azure似乎无法在site-packages中识别Python eggs,因此我不得不将其内容提取到site-packages中,然后一切都正常了。

下一步是尝试使用cython版本,虽然目前网站的速度似乎还不错。


这非常有帮助。你如何在Azure网站上运行syncdb? - Hat
其实和平常一样 - 如果项目设置使用与运行在Azure上的MySQL服务器相同的服务器,您可以从本地计算机的开发环境运行它。但是我强烈推荐使用south而不是使用syncdb! - bharling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接