Python Flask、SQLIte和CSV:如何在读取CSV时对CSV列中的数据执行转换功能

Python Flask, SQLIte, and CSV: How To Perform Transformation Function on Data In Column of CSV When Reading From CSV

我正在尝试从 Python(Flask、SQLite 环境)中以逗号分隔的文件类型从 CSV 导入数据以插入到我的数据库 table。

但是,在 CSV 中读取密码列后,我想对该数据应用哈希函数,然后将其插入数据库 table。现在如何我只能读取所有输入并在不进行任何修改的情况下原始插入它们。

我将如何在密码列中实现它?

cursor.execute('CREATE TABLE IF NOT EXISTS Users(email TEXT NOT NULL PRIMARY KEY, password TEXT NOT NULL);')
file = open('data/Users.csv')
contents = csv.reader(file)
next(contents) # skip header row
insert_records = "INSERT INTO Users(email, password) VALUES(?, ?)"
cursor.executemany(insert_records, contents)

这是对列的预期效果

password = hashlib.md5(password.encode())

CVS 格式

Email, Password
john@yahoo.com, hackme!

至 ->

john@yahoo.com, $@RN_SOMEHASH_JW#W

谢谢!

尝试在参数化 SQL 之前通过列表理解构建一个带有密码分配的新迭代器。请务必使用 with 上下文管理器在读取文本文件后自动关闭。

insert_records = "INSERT INTO Users(email, password) VALUES(?, ?)"

with open('data/Users.csv') as file:
    contents = csv.reader(file)
    next(contents) # skip header row

    # LIST OF TUPLES WITH HASH CONVERSION ON SECOND ITEM
    params = [(row[0], hashlib.md5(row[1].encode())) for row in contents]
    cursor.executemany(insert_records, params)