pysqlite for ARM

pysqlite for ARM

今天在俺的宝贝ARM板上跑起了pysqlite

刚好有个数据库倍份的程序要写
就用python啦
庆祝一下
恭喜!

有心得别忘了分享啊,呵呵
没太多心得
一旦跑起来程序就很好写了
垃圾程序不在这里献丑了

移植其实很简单
首先要确保sqlite已经移植到ARM板上
这个移植比较简单
我用的是sqlite3 + arm-linux-gcc2.95.3
比较顺利的就编译通过

pysqlite的移植我也没做完全
因为在X86的机器上pysqlite是以一个.egg的形式安装到python目录下的
而我不会使用.egg方式安装
所以就用了最土的办法
办法如下:
把x86的pysqlite-xxxxx-linux.egg拷贝一份
cp pysqlite-xxxxx-linux.egg /tmp/yyy.zip
然后解压缩
cd /tmp ; unzip yyy.zip
我们需要的是里头的pysalite2目录
这个目录里是.py文件和一个_sqpite.so
我们只需要把_sqlite.so文件替换成ARM的动态库就可以了
然后我们下载pysqlite尝试编译出_sqlit.so
编译办法和上次的移植python差不多
不过这次我学聪明了写了个Makefile编译
大约有十几个文件
参考x86的编译指令就可以了
编译命令和参数根据arm-linux-gcc做一点修改就可以了
会在linux下写C程序的人都能搞定
编译完产生的_sqlite.so就是我们需要的了
用它替换掉刚才pysqlite2下的同名文件

最后把pysqlite2拷贝到ARM板上
我的目录是这样
mv pysqlite2 /usr/lib/python24/lib-dynload/
尽情pysqlite吧


估计不会有人和我有一样的需求
写了也没人看

不过我很高兴有权在产品里使用python
比较搞笑的是python大约有10M
而程序却只有1K
呵呵,对arm编程不了解啊。
lz应该写篇文章让俺们入入门
我也没入门
还在吃以前x86的老本


顺便说一个写pysqlite要注意的地方
insert/update操作需要commit
这个和C语言操作sqlite不一样
commit不要太频繁
最好等所有的操作做完了一起commit
不然效率很低
比如我一开始写的程序是这样

[Copy to clipboard] [ - ]
CODE:
for i in data:
    cur.execute('insert into t1 values(?);', i)
    con.commit()

跑这段需要20秒

后来改成这样

[Copy to clipboard] [ - ]
CODE:
for i in data:
    cur.execute('insert into t1 values(?);', i)
con.commit()

就只需要2秒了

呵呵
估计写过数据库程序的人都知道
就俺不知道