(1)python中有一个包“sqlite3”,可以用来进行数据库相关的操作;
参考下面一个例子:
import sqlite3 import pickle img_list = [('a' , 0) , ('b' , 0)] length = [1 , 2] content = [img_list , length] #如果没有Info.db,则新建一个 if not os.path.exists("Info.db"): conn = sqlite3.connect("Info.db") c = conn.cursor() #执行括号中的语句,使用CREATE TABLE创建一个表 c.execute('''CREATE TABLE INFO (NAME TEXT NOT NULL, LENGTH INT NOT NULL);''') conn.commit() conn.close() #删除Info.db中已有的数据,初始化操作 conn = sqlite3.connect('info.db') c = conn.cursor() c.execute('delete from INFO;') #将img_list和length写入表中 for i in range(len(img_list)): a = "insert into INFO values(" + "'" + img_list[i] + "'," + str(length[i]) + ");" c.execute(a) conn.commit() conn.close()
(2)关于pickle的使用:
可以使用pickle包对对象进行序列化,方便存储和读取;例子如下:
首先进行序列化:
#init local.db if not os.path.exists(save_data_path + "local.db"): conn = sqlite3.connect(save_data_path + "local.db") c = conn.cursor() c.execute('''CREATE TABLE INFO (NAME TEXT NOT NULL, LENGTH INT NOT NULL);''') conn.commit() conn.close() conn = sqlite3.connect(save_data_path + 'local.db') c = conn.cursor() c.execute('delete from INFO;') conn.commit() conn.close() db_file = open(save_data_path + 'local.db' , 'wb') pickle.dump(content , db_file , 1) #序列化操作,1表示以二进制方式进行序列化
读取操作,例子如下:
import pickle with open('./train_data/0/local.db' , 'rb') as f: images , length = pickle.load(f)