如何在 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)
我可以在 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)