Seb*_*ian 2 python mysql csv python-3.x
如何从 Python 字典列表中编写 CSV 文件,确保字典键始终按相同顺序排列?
具体来说,我有一个 Python 字典列表(来自 JSON API),如下所示:
[
    {
        "id": 1,
        "name": "Peter",
        "city": "London"
    },
    {
        "id": 2,
        "city": "Boston",
        "name": "Paul"
        
    },
    {
        "id": 3,
        "name": "Mary",
        "city": "Paris"
    }
]
请注意,键(名称/城市)的顺序各不相同。
现在我想把它写到 MySQL 中。我目前所做的是将所有内容写入 CSV 文件,然后使用 LOAD DATA INFILE 将该文件加载到 MySQL 中。
我通过循环遍历列表中的所有元素并将值写入 CSV 文件来编写 CSV 文件:
def write_csv_file(filename, resp):
    csvFile = open(filename, "w", newline='', encoding='utf-8')
    csvWriter = csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_ALL)
    for element in resp:
       csvWriter.writerow(element.values())
    csvFile.close()
然而,这会导致 CSV 文件在行与行之间具有不同的值,具体取决于数据在字典中的位置。
如何更好地做到这一点,确保字典键始终处于相同的顺序?
任何提示都非常感谢!
使用一个csv.DictWriter. 在fieldnames将迫使顺序。
import csv
data = [
    {
        "id": 1,
        "name": "Peter",
        "city": "London"
    },
    {
        "id": 2,
        "city": "Boston",
        "name": "Paul"
    },
    {
        "id": 3,
        "name": "Mary",
        "city": "Paris"
    }
]
with open('test.csv', "w", newline='', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=["id", "name", "city"], delimiter=',', quoting=csv.QUOTE_ALL)
    writer.writerows(data)
这是生成的csv:
"1","Peter","London"
"2","Paul","Boston"
"3","Mary","Paris"
| 归档时间: | 
 | 
| 查看次数: | 69 次 | 
| 最近记录: |