python中的MySQL使用 + pickle使用

(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)

 

posted @ 2019-04-23 15:49  outthinker  阅读(1189)  评论(0编辑  收藏  举报