转载自: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})