Python SQLite3 迭代器

需求:
遍历一个指定文件夹,将指定文件夹下的文件名称写入到数据库对应的列中,如果数据库行中的数据与文件的名字相同,则将对应的文件名写入匹配行的相对应的列中

数据库如下图:
image

import os
import sqlite3

conn=sqlite3.connect('经典赏析.db3')
print('数据库连接成功')
cursor=conn.cursor()
index=0
poetnames=cursor.execute("SELECT PoetName FROM Directory")
#获取文件的名称
def file_name(file_dir):
    l=[]
    for root,dirs,files in os.walk(file_dir):
        for file in files:           
            l.append(str(file).split('.',1)[0])               
    return l
#插入数据到数据库中
def update_to_database(content,limit):
    cursor.execute("UPDATE Directory SET ImgURL="+"'"+str(content)+"'"+"WHERE PoetName="+"'"+str(limit)+"'")

filenames=file_name("E:\93首诗")
#连接数据库,并查询数据库中的文件
poetnames_list=[]
for l in poetnames:
    poetnames_list.append(l[0])
print(poetnames_list)   
for x in poetnames_list:
    for y in filenames:      
        if str(x)==str(y):
            update_to_database(str(str(x)+".jpg"),str(x))
conn.commit()
conn.close()

注意通过cursor.execute()所获得的对象是一个可迭代对象*,如果把这个可迭代对象用在for的嵌套循环中的话,会出错,达不到预期结果*(此处我踩了10多分钟坑,最后调试才发现问题),必须先创建一个集合,对cursor.execute()返回的对象进行迭代,并把数据添加到集合中。

欢迎关注公众号:

码码小虫

猜你喜欢

转载自blog.csdn.net/JianZuoGuang/article/details/81062959