• 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)
  • 相关阅读:
    Bootstrap3 代码-代码块
    DB2 911错误的解释
    Bootstrap3 代码-用户输入
    Bootstrap3 代码-内联代码
    Bootstrap3 排版-列表
    Bootstrap3 排版-引用
    Bootstrap3 排版-地址
    Bootstrap3 排版-缩略语
    Bootstrap3 排版-改变大小写
    Bootstrap3 排版-对齐
  • 原文地址:https://www.cnblogs.com/sly27/p/10987203.html
Copyright © 2020-2023  润新知