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