How to query for SQLite database column names in Python/Django?
我可以使用类似于
1 2 | a = Attorney.objects.all().values_list() print(a) |
除了数据库中的所有列名之外,我将使用什么命令进行类似的查询?另外,我如何将
如果我理解正确的话,我想像下面这样的事情可以满足你的要求。
1 2 3 4 5 6 | 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知道的所有表和字段名,您试图完成什么?
根据评论中的进一步解释进行编辑要将一个表的所有列都转储到一个csv,可能最容易从数据库内省光标返回的列元数据。在这种情况下,没有太多理由使用Django的模型定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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]) # http://stackoverflow.com/a/9752485 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) |
号