Django操作已存在的数据库

#Django操作已存在的数据库

如需转载请标明出处: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',
        }
}

这里写图片描述

##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

这里写图片描述

##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.结果
这里写图片描述


Reference:
https://docs.djangoproject.com/en/1.11/howto/legacy-databases/
https://www.cnblogs.com/feixuelove1009/p/5823135.html
http://www.liujiangblog.com/course/django/165

觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!
在这里插入图片描述
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itas109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值