我写了一些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文件上传到数据库,还是有其他方法可以解决这个问题