0

我想使用 SQL Server 数据库中的 Python 创建一个数据字典。我已经编写了以下代码,但它给了我以下结果,

[OrderedDict([('SystemID', '1'), ('FileID', 1), ('DateTime', None)])]  

但我希望我的结果如下,

File = { "SystemID": "1", "FileID": "1", "DateTime": None }   

我现在有以下代码

import pyodbc  
import collections  
cnxn = pyodbc.connect(trusted_Connection='yes', driver = '{SQL Server}', server = 'localhost', database = 'myDB')  
cursor = cnxn.cursor()  
cursor.execute("SELECT SystemID, FileID, EventDateTime FROM dbo.File")  
rows = cursor.fetchall()  
objects_list = []  
for row in rows:  
    d = collections.OrderedDict()  
    d['SystemID'] = row.SystemID  
    d['FileID'] = row.FileID  
    d['DateTime'] = row.EventDateTime  
    objects_list.append(d)  
print objects_list  
cnxn.close()  
4

1 回答 1

0

如果使用 dict(d),则将有序字典强制为 dict,但没有什么能阻止 Python 对其重新排序, Pythondict没有排序。

另一个问题是您正在遍历行,然后只取最后一项,可能是因为您正在开发并打算将其移回循环中,如下所示,否则它没有意义。不应该滥用在 python 中转义循环的变量。

我可以建议:

# Implicit concatenation for longish string, (see PEP 8)
output_format = ('File = {{ "SystemID": "{SystemID}", '
                 '"FileID": "{FileID}", "DateTime": {DateTime} }}')
for row in rows:  
    d = {}
    d['SystemID'] = row.SystemID  
    d['FileID'] = row.FileID  
    d['DateTime'] = row.EventDateTime    
    # expand the dictionary as keyword args for the str.format method
    print output.format(**d)

但是,您可能也不应该在最终产品中进行打印。

于 2014-01-03T05:20:54.057 回答