我必须从Oracle数据库中获取所有列名和类型,然后根据列类型执行不同的操作。
我的代码是:
for tab in table_list:
tables = {}#tabel list
table_types = {} #for each table dictionary column_name: type
cur.execute("select column_name, data_type from all_tab_cols where owner = 'AAA' and table_name = '"+tab+"' and hidden_column = 'NO' order by column_id asc")
res = cur.fetchall()
for type in res:
table_types[type[0]] = type[1]
tables[tab]=table_types
print res
print table_types
对于res
我得到:
[('COAG_ID', 'NUMBER'), ('COAG_CONT_ID', 'NUMBER'), ('COAG_CONT_OPER_ID', 'NUMBER'), ('COAG_CAGT_ID', 'NUMBER'), etc...
对table_types
我得到:
{'COAG_DELIVERY_PAYER': 'VARCHAR2', 'COAG_AGREEMENT_DATE': 'DATE', 'COAG_HANDSET_FULL_PRICE': 'NUMBER', etc...
我的问题是:为什么这些值的顺序不一样? table_types中的值直接来自res,为什么它们的顺序不同?
问候
的Pawel
答案 0 :(得分:2)
table_types是字典,字典不会按照您插入的顺序存储或显示。
字典的顺序与它们在内部的工作方式以及它们在哈希表中的结束顺序有关。这又取决于密钥哈希值,它们的插入顺序以及您正在使用的Python实现。
顺序是任意的(但不是随机的),知道它将是哪个顺序永远不会有用。