当前位置: 首页 > 面试题库 >

django-admin.py dumpdata到SQL语句

张晨朗
2023-03-14
问题内容

我正在尝试将数据转储到SQL语句。django-admin.py dumpdata仅提供json,xml,yaml。所以:

  1. 有人知道这样做的好方法吗?

  2. 我尝试过:

def sqldumper(模型):

    result = ""
units = model.objects.all().values()
for unit in units:
    statement = "INSERT INTO myapp.model "+str(tuple(unit.keys())).replace("'", "")+" VALUES " + str(tuple(unit.values()))+"\r\n"
    result+=statement
return result

因此,我自己查看模型的值,然后自己编写INSERT语句。然后我想到了使用“ django-admin.py sql”来获取“
CREATE”语句..但是后来我不知道如何从我的代码内部使用此行(而不是通过命令行)。我尝试了os.popen和os.system,但是它实际上不起作用..关于此的任何提示?

我将明确指出:如何在代码内部使用“ manage.py sql”?

我在我的视图中添加以下内容:

import os, sys
import imp
from django.core.management import execute_manager

sys_argv_backup = sys.argv
imp.find_module("settings")
import settings
sys.argv = ['','sql','myapp']
execute_manager(settings)
sys.argv = sys_argv_backup

事实是-
它可以工作..但是它会将语句写到标准输出中…这是某种东西,但并不完美。我将尝试直接使用django.core.management.sql.sql_create,我们将看看它如何进行。

谢谢


问题答案:

我建议使用特定于SQL的转储程序(例如,用于MySQL的mysqldump)。

对于嵌入在Python中的sqlite,您可以查看以下示例,该示例不涉及Django:

# Convert file existing_db.db to SQL dump file dump.sql
import sqlite3, os

con = sqlite3.connect('existing_db.db')
with open('dump.sql', 'w') as f:
    for line in con.iterdump():
        f.write('%s\n' % line)


 类似资料:
  • django-sql-dashboard Django SQL Dashboard provides an authenticated interface for executing read-only SQL queries directly against your PostgreSQL database, bringing a useful subset of Datasette to Dj

  • SQL Explorer SQL Explorer aims to make the flow of data between people fast,simple, and confusion-free. It is a Django-based application that youcan add to an existing Django site, or use as a standal

  • 本文向大家介绍ORM Django 终端打印 SQL 语句实现解析,包括了ORM Django 终端打印 SQL 语句实现解析的使用技巧和注意事项,需要的朋友参考一下 在 settings.py 中添加以下内容: orm.py: 执行 orm 操作 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 问题内容: 对于下表,是否可以创建SQL语句来创建数据矩阵或视图? 表: 结果矩阵: 问题答案: 您可以通过两种方式在MySQL中 透视 数据。如果您提前知道值(团队),则将对值进行硬编码,或者可以使用准备好的语句来生成动态sql。 静态版本为: 参见带有演示的SQL Fiddle 如果要使用带有预准备语句的动态版本,则代码为: 请参阅带有演示的SQL Fiddle。 编辑#1,在考虑了这一点之后

  • 我有一个SSIS包,它有一个Execute SQL任务,其中有一个INSERT语句,它将日志数据插入到跟踪执行时间的smss中的SSIS跟踪表中。每次尝试执行任务时,都会出现以下错误:[execute SQL task]错误:执行查询“INSERT INTO DBO.ssis_logging_details(execution_in...”失败,错误为:“必须声明标量变量”@execguid“。”

  • 问题内容: 我有此查询返回我的ID 但我收到此语句的语法错误 我如何正确更新从第一条语句中检索到的ID 问题答案: 正确的: