在python和matlab之间使用sqlite文件传输数据

之前使用python画图,总觉得没有matlab图形功能强大,而python模式匹配处理数据比较便利。所以考虑使用python过滤数据,然后使用matlab画图分析。当然传输数据的方式可以有很多种,为什么选择sqlite数据库文件方式?考虑同一数据库文件可以存储多个不同格式数据,而且需要增加新的数据类型时,代码可以从数据库表名中得到相关信息,代码修改量比较小。

python写入数据库文件

conn = db.connect('xxx.db') #连接数据

cur = conn.cursor() #创建游标



cur.execute('CREATE TABLE "%s"(name TEXT,val1 REAL,val2 REAL)'%(tablestr))#创建单表,名称及格式

cur.execute('INSERT INTO "%s" VALUES(%d,%d)'%(tablestr,val1,val2)) #添加元素进入数据库

... ...

cur.close()

conn.commit() #修改数据文件

conn.close()

matlab读取数据库文件

conn = sqlite('data.db');

tableList = fetch(conn,'select name from sqlite_master');

... ...

[rowNum,columnNum] = size(tableList);

for index=1:rowNum

exeStr = ['select * from ','"',char(tableList(index,1)),'"'];

dataVal = fetch(conn,exeStr);

dataVal = cell2mat(dataVal);

%读取出的文件为cell数据格式类型,需要转换为矩阵结构进行处理;char格式处理 char()或cellstr

... ...%处理数据

end



close(conn);

matlab操作sqlite数据库文件

调用python执行脚本

system('python ... ...');

 

连接数据库文件

dbfile = fullfile('password','data.db'); %password and filename

conn = sqlite(dbfile);

%conn = sqlite(dbfile,mode) %mode模式: connect(default) readonly create

 

获取相应数据库文件中表格名字

select name from sqlite_master where type='table' order by name

 

获取数据库内容:

%使用exec

%exec(conn,sqlquery) sqlquery select * from productTable

%curs = exec(conn,sqlquery)

%curs = exec(conn,sqlquery,qTimeOut)

%curs = exec(conn,sqlquery,Name,Value)

%curs = fetch(curs) %imports all rows of data

%curs = fetch(curs,rowlimit)

%curs = fetch(curs,Name,Value)

%curs = fetch(curs,rowlimit,Name,Value)

%curs.Data

%使用fetch获取数据

%fetch(conn,'select * FROM table')

%results = fetch(conn,sqlquery)

%results = fetch(conn,sqlquery,fetchbatchsize)

%results = fetch(conn,sqlquery,rwolimit)

 

插入数据库:insert(conn,tablename,columnname,value)

修改数据库:commit(conn);

关闭连接: close(conn);

你可能感兴趣的:(python知识)