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

64 次浏览 5 分钟阅读 0 个喜欢

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':'密码', 
    }
 } 
			</p>
			<p>
			</p>
			<p>
#由于Django内部链接MySQL数据库的时候默认的是使用MySQLdb的 #但是Python3中没有这个模块 #所以我们要去修改他的project同名文件夹下的__init__文件 import pymysql
pymysql.install_as_MySQLdb()
			</p>
			<p>
				 <strong>然后呢,我们就需要根据数据库去自动生成新的models文件</strong> 
			</p>
			<p>
python manage.py inspectdb #简单可以看一下自动映射成的models中的内容
			</p>
			<p>
				<strong>导出并且去代替models.py</strong> 
			</p>
			<p>
python manage.py inspectdb > models.py
			</p>
			<p>
				这样你就会发现在manage.py的同级目录下生成了一个models.py文件
			</p>
			<p>
				使用这个models.py文件覆盖app中的models文件。
			</p>
			<p>
				如果完成了以上的操作,生成的是一个<strong>不可修改/删除的models</strong>,修改meta class中的<strong>managed = True</strong>则可以去告诉django可以对数据库进行操作
			</p>
			<p>
				<a href="/uploads/legacy/content/uploadfile/201911/722c1573716569.png"><img src="/uploads/legacy/content/uploadfile/201911/thum-722c1573716569.png" alt="1294578-20180703082631513-1019513692.png"></a> 
			</p>
			<p>
				<strong>此时,我们再去使models.py和数据库进行同步</strong> 
			</p>
			<p>
python manage.py migrate
			</p>
			<h3>
				这个时候就已经大功告成了!
			</h3>
			<p>
				 然我们来验证一下:
			</p>
			<p>
python manage.py shell #一些查询语句
			</p>
			<h3>
				嗯.....没毛病。
			</h3>
		</p>
	</p>
</p>