我正在Windows上使用Apache,django 1.6和MySQL 5.5.8在本地设置django网站。我已经创建了一个测试数据库,并在MyPHPAdmin界面中填充了几个示例记录。它有一个专门用于django的用户,具有完全权限(仅适用于该数据库)。
在python会话中,我可以使用此函数与数据库进行交互
def TestConnection():
import MySQLdb
db=MySQLdb.connect(host="localhost", user="django", passwd="nu_django", db="nutana_django")
cursor=db.cursor()
cursor.execute("select * from test")
for x in range(0,cursor.rowcount):
row=cursor.fetchone()
print row[0], ' --> ', row[1]
并输出db的记录,所以我似乎有MySQL,MySQLdb和python正常协同工作。
接下来,在django中,我使用“python manage.py startapp Courses”创建了一个名为Courses的应用程序,并编辑了我的settings.py文件以包含Installed_Apps中的Courses并定义了这样的数据库连接:
ROOT_URLCONF = 'Nutana.urls'
WSGI_APPLICATION = 'Nutana.wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nutana_django',
'USER':'django',
'PASSWORD': 'nu_django',
'HOST':'127.0.0.1',
'PORT': '80'
}
}
最后一步是Apache。我已经将WSGI模块添加到apache并将以下内容添加到文件的末尾:
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /Nutana F:/Web_Django/Nutana/Nutana/wsgi.py
WSGIPythonPath F:/Web_Django/Nutana
<Directory F:/Web_Django/Nutana/Nutana/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
上面的路径都是正确的,但我不相信是必要的。
在f:\ web_django \ Nutana \ Courses中我将models.py编辑为以下内容:
from django.db import models
# Create your models here.
class Course(models.Model):
Name = models.CharField(max_length=200)
start_date = models.DateTimeField('Start Date')
Quota = models.IntegerField()
class Course_Venue(models.Model):
Course = models.ForeignKey(Course)
Name = models.CharField(max_length=200)
Max_Size = models.IntegerField()
好的......现在,当我在“f:\ web_django \ Nutana”的命令提示符下运行“python manage.py sql Courses”时,manage.py就在那里,我收到一个错误:
django.db.utils.OperationalError: (2013, "Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0")
这是很多配置,我不知道我哪里出错了!我不认为Apache是这里的问题,但我把它包括在内是彻底的。如果我调用一个不存在的网页,404错误包括对wsgi的引用,那么也许那些都很好?
localhost
16/12/2013 10:14:34 AM
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o mod_wsgi/3.3 Python/2.7.6 PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
答案 0 :(得分:3)
MySQL服务器端口3306而不是80!