gpt4 book ai didi

python - Django:如何获取项目中的每个表和该表的所有列?

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:06 25 4
gpt4 key购买 nike

我正在使用 MySQL 的 INTO OUTFILE 和 LOAD DATA LOCAL INFILE 创建一组 SQL 完整数据库复制脚本。

具体来说:

SELECT {columns} FROM {table} INTO OUTFILE '{table}.csv'

LOAD DATA LOCAL INFILE '{table}.csv' REPLACE INTO {table} {columns}

因此,我不仅需要表格,还需要表格的列。

我可以获得所有的表和列,但这不包括 m2m 表:

from django.db.models import get_models()
for model in get_models():
table = model._meta.db_table
columns = [field.column for field in model._meta.fields]

我也可以获得所有表格,但这并不能让我访问列:

from django.db import connection
tables = connection.introspection.table_names()

如何获取 Django 项目的每个表以及该表上的每个对应列?

更多详情:

我在相当大的数据集 (>1GB) 上执行此操作,因此使用 flat file方法似乎是在 MySQL 中制作如此大的副本的唯一合理方法。我已经复制了架构(使用 ./manage.py syncdb --migrate),我遇到的问题特别是复制数据,这需要我有表和列来创建正确的 SQL 语句。此外,我不能使用默认列排序的原因是因为我从中复制的生产数据库具有与使用新 syncdb 创建的不同的列排序(由于许多月的迁移和架构更改)。

最佳答案

你看过manage.py了吗? ?

您可以获得大量的 SQL 信息,例如,要获取项目中应用程序的所有创建表语法,您可以执行以下操作:

python manage.py sqlall <appname>

如果你输入:

python manage.py help

您可以看到大量其他功能。

关于python - Django:如何获取项目中的每个表和该表的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3207859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com