django 使用原生SQL语句反向生成MODELS.PY中的表结构
Posted sly27
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 使用原生SQL语句反向生成MODELS.PY中的表结构相关的知识,希望对你有一定的参考价值。
在一次工作中,有这么一个问题,就是要导入的数据字段不确定,但是还想使用django的ORM来对数据进行操作。。 琢磨了许久,弄个不完善的方案,但功能是能实现的,主要是思路。
废话不多说了,丑陋的展示一下吧。。。
from django.db import connection
#粗陋的用数组和字符串表示一下要导入的数据表单项
lis = [‘ll‘, ‘bb‘, ‘yy‘] #表示要建立的表单字段
l = ‘tablename‘ #表名
ll = ‘fff‘
new_table = connection.cursor() #获得游标,因为要在Django中使用原生sql语句。。。 # 创建表
new_table.execute("create table %s (id INT NOT NULL primary key )"%l) #先创建一个表,并定义主键 # 添加表元素 for i in lis: new_table.execute("alter table %s ADD %s varchar(40)"%(l,i)) #向表中插入字段,循环方式添加(图方便,全都定义字符串型)。 # 向表内写入数据new_table.execute(‘insert into %s (%s,%s,%s) values("gg1","gg2","gg3")‘%(l,lis[0],lis[1],lis[2])) #通过xldr读的xlsx,xls文件,遍历导入即可。。 ## 删除 # new_table.execute("drop table tablename") # 将生成的数据通过语句反写回去 ###### 在view.py中 加入以下两条语句,便可将使用原生SQL语句导入数据库中的数据进行反写。 python manage.py inspectdb > datatools/models.py ####### os.system(‘python manage.py inspectdb > datatools/models.py‘) # 动态调用新添加的表名 # k=l.title() # 首字母大写,因为model中类名首字母必须大写,自动反写后,表名首字母为大写 #
#动态的调用models.py中的表
# get_models = hasattr(datatools.models,k) # if get_models: # cls = getattr(datatools.models,k) # bb = cls.objects.all() # print(bb)
以上是关于django 使用原生SQL语句反向生成MODELS.PY中的表结构的主要内容,如果未能解决你的问题,请参考以下文章