使用Python将.dat文件上传到firebird数据库的问题

时间:2016-05-25 17:43:18

标签: python blob firebird

我写了一些Python代码来将一组文件上传到我的firebird数据库。 此数据集包含3个小文本文件(1kB)和1个较大的dat文件(4MB) 当我将这些文件存储在我的数据库中时,3个小文本文件是可以的,但较大的dat文件只是部分排序(~400 KB)。 当我使用我的firebird数据库管理器或我自己的Delphi代码上传文件时不是问题

请参阅以下代码,了解我将文件上传到数据库的方式

    pname="C:/15530-20160525075425/MeasData"
    gpname="C:/15530-20160525075425"
    fWaveRXPath=pname + '/' + "Waveform-RX.dat"
    fWaveRX = file(fWaveRXPath)
    fConfigPath=gpname + '/' + "Config.ini"
    fConfig = file(fConfigPath)
    fMeasPath=pname + '/' + "meas_cond-RX.txt"
    fMeas = file(fMeasPath)
    fWavePath=pname + '/' + "Waveform.txt"
    fWave = file(fWavePath)

    InsertStatement="insert into Tosh_Probe (PIJPNR, TEKENINGNR, RX_DATA, DATUM,  TIJD,  OPMERKING,  OPERATOR, CONFIG, MEAS_COND, WAVEFORM, ARRAYNR, SERIENR ) Values (?,?,?,?,?,?,?,?,?,?,?,?)"
    cur.execute(InsertStatement, (Pijpnr,Tekeningnr, fWaveRX, TestDate, TestTime, "", Operator,fConfig,fMeas,fWave,ArrayNr,Serienr))
    con.commit()

所以我基本上做的是创建一个指向文件的指针,并在我的sql语句中使用这个指针来填充变量。

为了检查我的数据库是否能够处理这些文件,我写了一些delphi代码来更新de RX_Data字段以获取具有更大dat文件的特定条目

    sql:='update TOSH_PROBE set RX_Data=:RX_Data Where Pijpnr = 15530';
    mydBase.query.sql.clear;
    mydBase.query.sql.add(sql);
    mydBase.query.prepare;
    mydbase.query.ParamByName('RX_Data').LoadFromFile('C:\15530-20160525075425\MeasData\Waveform-RX.dat',ftblob);
    mydbase.query.execSql;
    mydbase.query.close;

Python中是否有相同的方法可以将blob文件上传到数据库,还是有其他方法可以解决这个问题

0 个答案:

没有答案