Django1.8 + Python3.4 中使用 MySql

python struggling 2925次浏览 2个评论

12

开始学习 Django 了,安装 Django 非常容易,只要使用下面一条命令就行了,前提是需要下载pip。

<code>
pip install django
</code>

pip会下载Django的最新版本,现在Django已经到1.8.5了。

安装完Django后,开始安装 python-mysql ,由于刚开学习python,好多不知道,所以网上随便看了一下别人的博客,自己便开始编译安装python-mysql了,使用的MySQL-python-1.2.5.zip,安装完成后,创建好自己的项目,于是开始配置。配置文件在项目目录下的settings.py 中。

<code>
[root@sta feiyuweb]# vim feiyuweb/settings.py
 87 DATABASES = {
 88     'default': {
 89         'ENGINE': 'django.db.backends.mysql',
 90         'NAME': 'feiyuweb',   
 91         'USER': 'root',
 92         'PASSWORD':'123456',
 93         'HOST':'127.0.0.1',
 94         'PORT':'3306',
 95 
 96     }
 97 }
</code>

所有配置完成后开始启动服务,但是有错误,以下是错误信息。

<code>
[root@sta feiyuweb]# ./manage.py runserver
Performing system checks...

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7fa9c4a626a8>
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/site-packages/django/utils/autoreload.py", line 229, in wrapper
    fn(*args, **kwargs)

。。。。。。。。。。。。。

  File "/usr/local/lib/python3.4/site-packages/MySQL_python-1.2.5-py3.4-linux-x86_64.egg/MySQLdb/__i
    from MySQLdb.connections import Connection
  File "/usr/local/lib/python3.4/site-packages/MySQL_python-1.2.5-py3.4-linux-x86_64.egg/MySQLdb/con
    raise errorclass, errorvalue
                    ^
SyntaxError: invalid syntax
</code>

提示有语法错误,我想应该不是配置的问题吧!于是再从命令行测试下,依然是语法是错误。

1

然后开始在网上寻找答案,发现原来python3.4里面,使用以前python2.7的mysqldb已经不能连接mysql数据库了,不过可以使用pymysql,来完成连接mysql的重任,步骤如下:

1,在github上下载pymysql的安装包

https://github.com/PyMySQL/PyMySQL/

2,安装

先解压,然后使用以下命令安装:

<code>
python setup.py install
</code>

3,连接

安装完成后,保持settings.py中的配置不变,但是需要在项目下的__init__.py文件中添加如下代码:

<code>
[root@sta feiyuweb]# vim feiyuweb/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
</code>

4,测试

<code>
[root@sta feiyuweb]# ./manage.py validate
/usr/local/lib/python3.4/site-packages/django/core/management/commands/validate.py:15: RemovedInDjango19Warning: "validate" has been deprecated in favor of "check".
  RemovedInDjango19Warning)

System check identified no issues (0 silenced).
</code>

或者在命令行下仍然使用上面的方法进行测试:

<code>

In [2]: from django.db import connection

In [3]: cursor = connection.cursor()

</code>

没有出错则说明已经成功了!

5,建立数据库

由于 Django1.7 后建立数据库的方法已经与原来不同了,所有不能使用sqlall命令了。会出现以下错误:

<code>
[root@sta feiyuweb]# ./manage.py  sqlall pyweb
CommandError: App 'pyweb' has migrations. Only the sqlmigrate and sqlflush commands can be used when an app has migrations.
</code>

Django 1.7 后改用 makemigrations 命令了,更多的说明请看官方文档 https://docs.djangoproject.com/en/1.7/intro/tutorial01/#activating-models

<code>
[root@sta feiyuweb]# ./manage.py  makemigrations  pyweb
Migrations for 'pyweb':
  0001_initial.py:
    - Create model Author
    - Create model Book
    - Create model Publisher
    - Add field publisher to book

</code>

DevOps-田飞雨 》》转载请注明源地址
喜欢 (1)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 转载请附上原文链接
    struggling  2015-12-17 09:34 回复