Django学习6-mysql数据库使用1-安装与连接

来源:互联网 发布:中国网络安全法 编辑:程序博客网 时间:2024/05/21 20:22

从这篇开始,我们要开始有趣的部分了,哈哈,数据库。这里我使用的mysql,对于Django和python的版本不同,这里会有很多想不到的麻烦,那么开始吧,遇到再说。

不多bb,至少先搞个mysql撒,Ubuntu下:

apt-get install mysql-server

中途会提示设置root密码吧。

好了,mysql装好了,下面就一个一个python连接mysql的中间件了,这里注意,python2和python3使用的是不一样的,python2使用的是MySQL-python,可以使用pip安装

pip install mysql-python
可能会遇到这个错误EnvironmentError: mysql_config not found这样解决
sudo apt-get install libmysqlclient-devsudo updatedblocate mysql_config

但python3这样是不行,不能用 mysql-python来连接数据库,需要用pymysql来连接(这个应该也能从pip上直接安装吧):我是从github上下载pymysql(https://github.com/PyMySQL/PyMySQL/);然后运行python setup.py install

可以了,到目前为止,所有的准备工作都做好了,下面来看看怎么使用吧。

首先,还是按照前面讲的,建工程,建app,修改setting里面的app选项,为了使用数据库,这里除了修改app(不使用模板就不用改template了)之外,还需要修改database:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME': 'testsql',        'USER': 'root',        'PASSWORD': 123456,        'HOST': '',        'PORT': '',    }}
第一个选项是使用的数据库类型,固定写法,第二个是你的数据库(需要提前在mysql中建立好),第三个是用户,第四个是密码,后面两个如果默认的话就是localhost和3306 。

好了,现在进入blog这个app下的models.py,这里我先放上我怎么写的,再说什么意思

from __future__ import unicode_literalsfrom django.db import modelsclass Users(models.Model):    username=models.CharField(max_length=20)
这里的每一个继承自models.Model的类,后面都会去mysql中对应生成一个表,这里到时候就会生成blog_users这个表(app名字+类名),里面表示建立一个username属性,CharField表明了它的类型,参数是长度(如果一个表没有显示声明主键,mysql会自动加一个自增的id)。

好了,models也写好,现在开始连接吧,这里因为使用的Django不同,又开始不同了,1.8之前的,很简单,一句话

python manage.py syncdb

就搞定了,但1.8之后就不行了,需要三步来完成(修改,以前写错了,以前按照视频学,然后出错自己去找解决,问题解决之后就以为他们解决问题的时候给出的解释是正确的,但后来自己看了官方文档——这个我打算翻译一下数据库部分,有机会我会过来给个链接):

首先使用python manage.py makemigrations [app的名字]在app目录下的migrations目录下生成一个XXXX_yyyyyy打头的py文件(XXXX是从0001开始的,yyyyyy第一次生成的应该是initial,后面再生成就和本次操作有关,如果只有一个操作,比如删除一个表,那么估计就是deleteXXX,如果多个操作,应该是日期);

然后使用python manage.py sqlmigrate [app的名字] [xxxx],就是上一步生成的那个XXXX,上一步生成比如是0001_initial.py,这里就是0001,以此类推;

最后,使用python manage.py migrate就可以完成。

这里只是讲了数据库的简单操作,后面会继续讲接下来的工作,同时我也希望能坚持完成官方文档翻译,到时候一起放出来,毕竟那个才权威。


0 0
原创粉丝点击