ну 1 тему удалите или склейте, я просто 1 создал не там, а потом её перенесли к другой в раздел.
я использую встроенную sqlite3, так в нее можно полностью одинаковые записи или с одинаковыми главными ключами?
import os
import hashlib
import glob
from PIL import Image
import sqlite3
class id_hash:
def __init__(self, id):
self.id = id
self.hash_list=[]
def get_id(str):
s=str.split('id_')
return s[1]
con = sqlite3.connect('G:/project/test.db')
cur = con.cursor()
#cur.execute("create table hash_id (hash,id)")# not every time?
#con.commit()
def put_in_db(hash,img_path):
cur.execute("insert into hash_id values (?, ?)", (hash,img_path))
con.commit()#not from every submit?
os.chdir("F:/my_db") #put path to param
main_dir= os.getcwd()
dir_list=[d for d in os.listdir(os.getcwd()) if os.path.isdir(d)] #too complicated but work
if __name__ == '__main__':
for dirs in dir_list:
curr_path= main_dir+'\\'+dirs
os.chdir(curr_path)
for it in glob.glob("*.jpg"):
full_path= curr_path+'\\'+it
try:
im= Image.open(full_path)
im_hash= hashlib.md5(im.tostring()).hexdigest()
put_in_db(im_hash,full_path)
except:
print 'eror'
наверно я не правильно сделал что commit после каждой записи? по идее надо копить в памяти до какого то размера список записей а потом уже делать массовую вставку и коммит?
или еще лучше наверно работать в памяти а потом, чтобы сбросило на диск.