美文网首页
[转载]Django操作已经存在的表

[转载]Django操作已经存在的表

作者: BlueCat2016 | 来源:发表于2018-09-18 16:28 被阅读0次

转载自:http://blog.csdn.net/itas109
QQ技术交流群:129518033


环境:
Python : 3.5.4
Django : 1.11
编译器:VS2013 update 5
系统环境:Windows 7 64bit


前言

通过Django的models.py文件可以生成相应的数据库,但是对于已经存在的数据库该怎么处理呢?

1.配置Django你的数据库参数

通过编辑XXX/settings.py中的DATABASES设置并将值分配给“default”连接的以下键来执行此操作:

这里以MySQL为例。
由于mysqldb-python这个模块不支持Python3.4以上版本,因此只能安装pymysql库。

pip install pymysql
import pymysql         # 一定要添加这两行!
pymysql.install_as_MySQLdb()

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'test',
            'HOST':'192.168.1.100',
            'PORT':'3306',
            'USER':'root',
            'PASSWORD':'123456',
        }
}
image.png

2.自动生成models

Django附带了一个名为inspectdb程序,它可以通过现有数据库来创建模型。 运行一下命令行可以查看输出:

$ python manage.py inspectdb

可以直接另存到文件

$ python manage.py inspectdb > models.py

清理模型后,将文件命名为models.py并将其放在包含应用程序的Python包中。 然后将应用程序添加到INSTALLED_APPS设置中。

默认情况下,inspectdb创建非托管模型。 也就是说,在模型的Meta类中,managed = False告诉Django不要管理每个表的创建,修改和删除:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)
    class Meta:
       managed = False
       db_table = 'CENSUS_PERSONS'

如果你想让Django管理表的生命周期,你需要将上面的托管选项更改为True(或者只是删除它,因为True是它的默认值)。

3.建立核心Django表

运行migrate命令以安装任何额外需要的数据库记录,例如管理员权限和内容类型:

$ python manage.py migrate

image.png

4.测试

在XXX/views.py中

from django.shortcuts import render

from mydjango import models

# Create your views here.
def test(request):
    #return HttpResponse("just test")
    if request.method == "POST":
        username = request.POST.get("username",None)
        password = request.POST.get("password",None)

        print(username,password)

    user_list = models.UserDetails.objects.all().values('user_name','user_password')

    return render(request,"test.html",{"data":user_list})

5.结果

image.png

相关文章

  • [转载]Django操作已经存在的表

    转载自:http://blog.csdn.net/itas109QQ技术交流群:129518033 环境:Pyth...

  • django

    django django同步表结构建表修改表数据库操作增删改查 同步表结构 所有操作需要在项目manage.py...

  • Python学习

    python Django(三) Django单表操作-MySQL 1、创建应用 1.1、添加应用 1.2、修改配...

  • Python学习

    python Django(三) Django单表操作-SQLite3 1、创建应用 1.1、添加应用 1.2、修...

  • Python学习

    python Django(二) Django单表操作 1、创建应用 1.1、添加应用 1.2、修改配置 修改se...

  • Django框架MySQL数据库到models模型的映射关系

    设计models模型 Django自动生成models如果数据库表已经存在,执行命令,可以自动生成Models模型...

  • Django:rest framework补充ContentTy

    ContentType django内置的ContentType组件就是帮我们做连表操作如果一个表与其他表有多个外...

  • django快速入门(一)

    创建django项目 以下所有操作均在已经安装了django1.11的Virtualenv虚拟环境下操作。如何搭建...

  • Redis 哈希

    Hset 为哈希表中的字段赋值 如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作 如果字段已经存在于哈...

  • 2018-04-27

    Django-删除Mysql数据表数据操作 1. 单条数据删除操作 1.1 views视图操作 1.2配置当前应...

网友评论

      本文标题:[转载]Django操作已经存在的表

      本文链接:https://www.haomeiwen.com/subject/qnkpnftx.html