学习Python(2)Django 配置MySQL,同步数据库

1、配置MySQLhtml

Django 的默认数据库是sqlite3,具体怎么样不知道了,反正是没用过,这里改成MySQL,作法也很简单,只须要修改配置文件便可python

1.项目名文件下settings.pymysql

DATABASES = {
    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'blog_table',    #你的数据库名称

        'USER': 'root',   #你的数据库用户名

        'PASSWORD': '123456', #你的数据库密码

        'HOST': 'localhost', #你的数据库主机,留空默认为localhost

        'PORT': '3306', #你的数据库端口
    }
}
复制代码

更多数据库配置参考:docs.djangoproject.com/en/2.0/ref/…sql

2.项目名文件下 __ init__.py数据库

import pymysql
pymysql.install_as_MySQLdb()
复制代码

2、建立modelsdjango

from django.db import models

# Create your models here.

class Article(models.Model):
    #惟一ID
    article_id = models.AutoField(primary_key=True)

    #文章标题
    title = models.TextField(max_length=100)

    #文章摘要
    brief_content = models.TextField(max_length=200)

    #文章内容
    content = models.TextField(max_length=2000)

    #文章发布日期
    publish_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

复制代码

经常使用model field 类型json

一、AutoField 一个自增的IntegerField,通常不直接使用,Django会自动给每张表添加一个自增的primary key。bash

二、BigIntegerField 64位整数, -9223372036854775808 到 9223372036854775807。默认的显示widget 是 TextInput.app

三、BinaryField ( Django 1.6 版本新增 ) 存储二进制数据。不能使用 filter 函数得到 QuerySetjsp

四、BooleanField True/False,默认的widget 是 CheckboxInput。 若是须要置空,则必须用 NullBooleanField 代替。 Django 1.6 修改:BooleanField 的默认值 由 False 改成 None,在 default 属性未设置的状况下。

五、CharField 存储字符串。必须有 max_length 参数指定长度。默认的form widget 是 TextInput 若是字符串巨长,推荐使用 TextField。

六、CommaSeparatedIntegerField 一串由逗号分开的整数。必须有 max_length 参数。

七、DateField 日期,与python里的datetime.date 实例同。有如下几个可选的选项,均为bool类型: DateField.auto_now: 每次执行 save 操做的时候自动记录当前时间,常做为最近一次修改的时间 使用。注意:老是在执行save 操做的时候执行,没法覆盖。 DateField.auto_now_add: 第一次建立的时候添加当前时间。常做为 建立时间 使用。注意:每次create 都会调用。 默认的form widget 是 TextInput。 注意:设置auto_now 或者 auto_now_add 为 True 会致使当前自动拥有 editable=False 和 blank = True 设置。

八、DateTimeField 日期+时间。与python里的 datetime.datetime 实例同。经常使用附加选项和DateField同样。 默认 form widget 是一个 TextInput

九、TextField 大文本,巨长的文本。默认的 form widget 是 Textarea。

3、同步数据库

终端输入命令

# 1. 建立更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate
复制代码

咱们的表已经在数据库生成,其它的应该是django的系统表

这里须要注意的是django不负责数据库编码,因此新建数据库时必定要指定好编码,否则后面操做中文字符会报错

导出数据 导入数据

python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json
复制代码

把数据库中的表生成对应的model

python manage.py inspectdb
复制代码

4、建立超级管理员

python manage.py createsuperuser # 按照提示输入用户名和对应的密码就行了邮箱能够留空,用户名和密码必填
 
python manage.py changepassword username  # 修改 用户密码
复制代码

建立完成以后,启动项目登录admin后台

http://127.0.0.1:8888/admin
复制代码

在这里咱们也能够查看、维护数据

5、数据查询

如今表里面插入两条数据,在admin后台添加或者在数据库直接添加

django能够直接渲染模板页面,相似于jsp那种

views.py

from django.shortcuts import render
from django.http import HttpResponse
from blog.models import Article

def get_all_article(request):
    #获取全部数据
    article_list = Article.objects.all()
    #结合一个给定的模板和一个给定的上下文字典, 并返回一个渲染后的HttpResponse对象
    return render(request, 'blog/articles.html',{
        'article_list': article_list
    })
复制代码

记得添加应用的路由

path('get_all_article', blog.views.get_all_article),
复制代码

编写页面,django 有不少本身的语法,感兴趣能够网上找一下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1">
        {% for article in article_list %}
            <tr>
                <td>{{article.title}}</td>
                <td>{{article.brief_content}}</td>
                <td>{{article.publish_date}}</td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>
复制代码

访问测试

http://127.0.0.1:8888/blog/get_all_article
复制代码

能够正常取出数据,配置MySQL的大体流程就是这样了

相关文章
相关标签/搜索