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)

原文地址:https://www.cnblogs.com/sly27/p/10987203.html

时间: 2024-08-08 18:09:20

django 使用原生SQL语句反向生成MODELS.PY中的表结构的相关文章

SQL语句查询:把数据库中的表(表名)列出来

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' 如:

Django使用数据库表反向生成models类

目录 Django根据已有数据库表反向生成models类 一. 创建一个Django项目 二.修改settings文件 根据数据库数据生成对应的models模型类 生成模型文件 将模型文件导入到app当中 Django根据已有数据库表反向生成models类 一. 创建一个Django项目 django-admin startproject 'xxxx' 二.修改settings文件 在setting里面设置你要连接的数据库名称,地址,账号密码之类的信息,和创建新项目的时候一致 DATABASES

在Hibernate中使用原生SQL语句

使用原生SQL查询必须注意:程序必须选出所有的数据列才可被转换成持久化实体.假设实体在映射时有一个<many-to-one../>的关联指向另外一个实体,则SQL查询中必须返回该<many-to-one../>映射的外键列,否则将导致抛出"column not found"异常.最简单的做法是,在SQL字符串中使用星(*)来表示返回所有列.    在原生SQL语句中一样支持使用参数,这些参数即可使用问号参数(?),也可使用名字参数. 示例1:名字参数public

Django终端打印SQL语句和调用test脚本

Django终端打印SQL语句 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'D

django使用原生SQL的方法

django使用原生SQL的方法 使用extra: models.Book.objects.filter(publisher__name='传说中的申小五').extra(where=['price>50'])models.Book.objects.filter(publisher__name='传说中的申小五', price__gt=50)?models.Book.objects.extra(select={'count': 'select count(*) from hello_Book'}

entityframework学习笔记--009-使用原生sql语句操作数据

1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: 1 public class Payment 2 { 3 public int PaymentId { get; set; } 4 public decimal Amount { get; set; } 5 6 public string Vendor { get; set; } 7 } 1.2 数据访问类: 1 public c

python之django直接执行sql语句

python之django直接执行sql语句 sql = 'select * from stu' info = 模型类.objects.raw(sql)

利用&quot;SQL&quot;语句自动生成序号的两种方式

1.首先,我们来介绍第一种方式: ◆查询的SQL语句如下: select row_number() over (order by name) as rowid, sysobjects.[name] from sysobjects ◆运行的结果: rowid   name 1           all_columns 2           all_objects 3           all_parameters 4           all_sql_modules 5          

ajaxSubmit 页面生成的html 中含有表单提交表单方式

$("#form_title").ajaxSubmit({ //页面生成的html 中含有表单提交表单方式 dataType: "json", success : function(obj){ lock_flag = false; if(obj.errno == 0){ lock_flag = false; layer.msg(obj.errdesc); setTimeout(function() { window.location.reload(); },2000