zoukankan      html  css  js  c++  java
  • mysql 连接 django

    版本:

    django:1.11.9

    python3

    mysql 5.7.18

    在这里我们认为你已经安装好了mysql,python ,django

    下面是来自django官方教程的一段话

    If you wish to use another database, install the appropriate database bindings 

    and change the following keys in theDATABASES 'default' item to match your database connection settings:

    first

    你需要一个Python的db API DRIVER   即数据库接口驱动

    常见的有mysqldb、pymysql、mysqlclient  

    • MySQLdb is a native driver that has been developed and supported for over a decade by Andy Dustman.
    • mysqlclient is a fork of MySQLdb which notably supports Python 3 and can be used as a drop-in replacement for MySQLdb. At the time of this writing, this is the recommended choice for using MySQL with Django.
    • MySQL Connector/Python is a pure Python driver from Oracle that does not require the MySQL client library or any Python modules outside the standard library.

    但是MYSQLdb不支持python3  ,

    In addition to a DB API driver, Django needs an adapter to access the database drivers from its ORM.

    Django provides an adapter for MySQLdb/mysqlclient while MySQL Connector/Python includes its own.

    上面的意思是不仅需要接口驱动,还需要适配器,django已经为MYSQLdb和mysqlclient提供了适配器,MySQL Connector/Python内置这个适配器

    虽然我有一个pymysql ,但按照官网的推荐我还是下载了一个mysqlclient

    >>pip install mysqlclient

    创建一个数据库

    打开mysql,type:

    CREATE  DATABASE  database_name CHARACTER SET UTF8;       指定数据库的编码utf8

    Now ,我们已经有了db API DRIVER 和创建好的数据库,开始第二步

    second

    改变配置文件

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'mysite',
            'HOST':'',
            'PORT':'3306',
            'USER':'root',
            'PASSWORD':'123',
        }
    }

    NAME   是你创建的数据库名字

    HOST  主机

    PORT 端口

    USER  用户名    这个用户的权限应是能创建数据表的或者数据库,忘了。。

    PASSWORD  登录mysql的密码

    还有其他选项

    third  

    现在我们可以创建一些模型去加到数据库里了

    例如像下面

    from django.db import models
    
    # Create your models here.
    
    class Publisher(models.Model):
        pub_name=models.CharField(max_length=200)
        city=models.CharField(max_length=200)
    
    class Book(models.Model):
        book_name = models.CharField(max_length=200)
        author = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
        publish = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    View Code

    calss  定义的类名将会是数据库对应的表名,属性对应字段,不过表明有所偏差,假如你的应用名是blog ,class名是Book, 创建的表则是blog_book   数据库不区分大小写

    note:

    在配置文件settings.py 修改

    INSTALLED_APPS = [
        'blog.apps.BlogConfig',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    View Code

    将我们写的应用添加进去,

    'blog.apps.BlogConfig', 红色部分是我们应用app.py文件中的类名。

    last

    切换到项目的目录下

    like

    执行以下几条命令

    python manage.py makemigrations

    以上是提示错误,表示在Publisher 这个类的属性不能是book,所以起名字要注意

    改完字段之后

    OK

    你可以使用

    Python manage.py sqlmigrate 应用名 0001

    去查看下,这条命令不会做任何操作,只是查看

    python manage.py migrate

    创建完成,再打开mysql,切到数据库你会看到

    总结:

    django   为我们内置的数据库是sqlite ,但是真正生产时是需要mysql, 等大型数据库的,

    好像使用MYSQL,只需要两步

    • 安装databases bindings
    • 更改配置文件

     

  • 相关阅读:
    Flume基础(一):概述
    Hive高级(2):优化(2) 表的优化
    ospf命令
    Verizon 和某 BGP 优化器如何在今日大范围重创互联网
    BGP数据中心鉴别方法
    多线BGP鉴定
    mpls ldp neighbor 和loopbak
    ospf默认路由
    ospf
    ubuntu cloud init获取元数据失败
  • 原文地址:https://www.cnblogs.com/yuyang26/p/7411269.html
Copyright © 2011-2022 走看看