zoukankan      html  css  js  c++  java
  • Django去操作已经存在的数据库

    Django去操作已经存在的数据库

     

    数据库,各种表结构已经创建好了,甚至连数据都有了,此时,我要用Django管理这个数据库,ORM映射怎么办???

    Django是最适合所谓的green-field开发,即从头开始一个新的项目

    但是呢,Django也支持和以前遗留的数据库和应用相结合的。

    Django的数据库层从Python代码生成SQL schemas。但是对于遗留的数据库,你已经用于SQL schemas,这种情况下你需要为你已经存在的数据库表写模型(为了使用数据库的API),幸运的是,Django自带有通过阅读你的数据库表规划来生成模型代码的辅助工具 manage.py inspectdb

     1.Django默认使用的是sqllit数据库?如何使用MySQL数据库?

    复制代码
    #修改setting.py文件
    
    DATABASE = {
        'default':{
            'ENGINE':'django.db.backends.mysql',
            'NAME':'数据库名',
            'HOST':'数据库地址',
            'PORT':端口,
            'USER':'用户名',
            'PASSWORD':'密码',
        }
    }
    复制代码
    复制代码
    #由于Django内部链接MySQL数据库的时候默认的是使用MySQLdb的
    #但是Python3中没有这个模块
    #所以我们要去修改他的project同名文件夹下的__init__文件
    
    import pymysql
    pymysql.install_as_MySQLdb()
    复制代码

     然后呢,我们就需要根据数据库去自动生成新的models文件

    python manage.py inspectdb    #简单可以看一下自动映射成的models中的内容

    导出并且去代替models.py

    python manage.py inspectdb > models.py

    这样你就会发现在manage.py的同级目录下生成了一个models.py文件

    使用这个models.py文件覆盖app中的models文件。

    如果完成了以上的操作,生成的是一个不可修改/删除的models,修改meta class中的managed = True则可以去告诉django可以对数据库进行操作

    此时,我们再去使models.py和数据库进行同步

    python manage.py migrate

    这个时候就已经大功告成了!

     然我们来验证一下:

    python manage.py shell
    
    #一些查询语句
  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/fengbo123/p/10498421.html
Copyright © 2011-2022 走看看