需求:
遍历一个指定文件夹,将指定文件夹下的文件名称写入到数据库对应的列中,如果数据库行中的数据与文件的名字相同,则将对应的文件名写入匹配行的相对应的列中
数据库如下图:
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()返回的对象进行迭代,并把数据添加到集合中。
欢迎关注公众号: