如何在 Python/Django 中查询 SQLite 数据库列名?

How to query for SQLite database column names in Python/Django?

我可以在 Python 中使用类似

的方法从数据库中获取特定 Django 模型的所有值
a = Attorney.objects.all().values_list()
print(a)

如果不是针对数据库中的所有列名,我会使用什么命令来进行类似的查询? 另外,我如何将 Attorney.objects.all().values_list() 返回的所有值附加到一个我可以迭代的列表中?

如果我没理解错的话,我想像下面这样的东西可以满足你的要求。

import django.apps
models = django.apps.apps.get_models()
for model in models:
    field_names = [f.attname for f in model._meta.get_fields()]
    for fields in model.objects.values_list(*field_names):
        do_something_with_the_fields(fields)

让 Django 为您做这件事似乎很奇怪。你想通过获取 django 知道的所有 tables 和字段名称来完成什么?

根据评论中的进一步解释进行编辑

要将 table 的 table 的所有列转储到 CSV,可能最简单的方法是从数据库中检查游标返回的列元数据。在这种情况下没有太多理由使用 Django 的模型定义:

import csv
from django.db import connection

def dump_table_to_csv(db_table, io):
    with connection.cursor() as cursor:
        cursor.execute("SELECT * FROM %s" % db_table, [])
        rows = cursor.fetchall()
        writer = csv.writer(io)
        writer.writerow([i[0] for i in cursor.description])  # 
        for row in rows:
            writer.writerow(row)


witb open('path/to/myfile.csv', 'wb') as f:
    dump_table_to_csv(django_model._meta.db_table, f)