SQLAlchemy 中使用 keys() 的列名顺序
Order of column names with keys() in SQLAlchemy
在选择 所有列 时,我能否依靠 keys() 始终 return 列名称与查询结果的顺序相同?根据我的输出,它似乎是真的,但我找不到任何保证它的文档。我倾向于认为这是真的,因为虽然字典可能是无序的,但它们应该是一致的。
# Loop through each table in the database where all tables
# are being reflected at once.
for table in Base.metadata.tables.values():
# Select all columns
rows = Session.query(table).all()
# Prepend a header row
rows.insert(0, rows[0].keys())
# Output to file
fh = open(filename, 'wb')
outcsv = unicodecsv.writer(fh)
outcsv.writerows(rows)
fh.close
类似地,column_descriptions 也以与值相同的顺序出现在 return 名称中,但我再次不确定它是否总是正确的。
# Prepend list of column names as the first row
rows.insert(0, [col['name'] for col in Session.query(table).column_descriptions])
任何帮助将不胜感激。谢谢!
返回的行数为KeyedTuple;它们在 1 个查询中的顺序由原始 select 中列的顺序决定,这将绝对保证顺序与 .keys()
返回的顺序相同,并且每个项目的顺序相同在相同的查询结果中。
在选择 所有列 时,我能否依靠 keys() 始终 return 列名称与查询结果的顺序相同?根据我的输出,它似乎是真的,但我找不到任何保证它的文档。我倾向于认为这是真的,因为虽然字典可能是无序的,但它们应该是一致的。
# Loop through each table in the database where all tables
# are being reflected at once.
for table in Base.metadata.tables.values():
# Select all columns
rows = Session.query(table).all()
# Prepend a header row
rows.insert(0, rows[0].keys())
# Output to file
fh = open(filename, 'wb')
outcsv = unicodecsv.writer(fh)
outcsv.writerows(rows)
fh.close
类似地,column_descriptions 也以与值相同的顺序出现在 return 名称中,但我再次不确定它是否总是正确的。
# Prepend list of column names as the first row
rows.insert(0, [col['name'] for col in Session.query(table).column_descriptions])
任何帮助将不胜感激。谢谢!
返回的行数为KeyedTuple;它们在 1 个查询中的顺序由原始 select 中列的顺序决定,这将绝对保证顺序与 .keys()
返回的顺序相同,并且每个项目的顺序相同在相同的查询结果中。