无法打开数据库文件

时间:2020-04-23 15:55:51

标签: python database

我正在尝试使用此代码打开数据库,但出现错误消息。 这是我的代码:

def load_data(data_path='.', expnames=('R1','R2','R3','R4'), segments=('wait','blanking','preeject','eject'), fnpattern='AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}'):
    '''
    Creat a dictionary to save all the loaded rawdata for easily calling out

    Parameters
    -----------------
    data_path: path of the needed datasets

    Returns
    -----------------
    out_data:dict
            dictionary that contains loaded datasets of R1,R2,R3,R4
    '''
    out_data={}
    for exp_desn in expnames:
        row={}
        for segment in segments:
            dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )
            #assert os.path.exists(dbname+'.db')
            data=load_all_segments(dbname)
            row[segment] = data
        out_data[exp_desn] =  row
    return out_data```

这就是我如何调用函数以加载数据的方法:

rawdata_R = 
load_data("\\Users\\Fast\\senseering\\raw_data", ('R1','R2','R3','R4'), ('wait','blanking','preeject','eject'), 'AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}')

但是我收到此错误,我不明白哪里出了问题:

OperationalError                          Traceback (most recent call last)
<ipython-input-17-30cfc39001e5> in <module>
----> 1 rawdata_R = load_data("\\Users\\Fast\\senseering\\raw_data", ('R1','R2','R3','R4'), ('wait','blanking','preeject','eject'), 'AKF_E_{exp_desn}_Stempel_1_Formular_punches_segment_{segment}')

<ipython-input-8-a923a3777194> in load_data(data_path, expnames, segments, fnpattern)
     44             dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )
     45             #assert os.path.exists(dbname+'.db')
---> 46             data=load_all_segments(dbname)
     47             row[segment] = data
     48         out_data[exp_desn] =  row

<ipython-input-8-a923a3777194> in load_all_segments(db_name, segment)
      1 def load_all_segments(db_name, segment=""):
----> 2     conn = sqlite3.connect(db_name + ".db")
      3     df_names = pd.read_sql_query("SELECT name FROM sqlite_master WHERE type='table';", conn)
      4     df_all = pd.DataFrame()
      5 

OperationalError: unable to open database file

任何人都可以告诉我问题出在哪里以及如何解决。

1 个答案:

答案 0 :(得分:-1)

谢谢您的帮助。

这是答案: 代替:

dbname=os.path.join(data_path, exp_desn, fnpattern.format(segment=segment, exp_desn=exp_desn) )

我应该使用以下内容:

dbname=os.path.join(data_path,  fnpattern.format(segment=segment, exp_desn=exp_desn) )

差异与文件夹的路径有关。 第一个建议在路径文件夹中我拥有exp_desn,而我没有,这就是为什么我无法打开它的原因。一旦删除它,我的数据就可以访问了。

相关问题