python qpython sqlite3 like 模糊查询 变量 赋值 单引号 双引号

时间:2022-05-22 05:32:13

1、sqlite多表查询用模糊查询怎么写?
参考自:http://www.iteye.com/problems/85830


select a.name,a.age,b.name,b.sex from a a inner join  b b on a.name=b.name where a.name like 
'%"+name+"%'
或者
"select a.name,a.age,b.name,b.sex from a a inner join  b b on a.name=b.name where a.name like 
'%"+name+"%'"

2、主要是想在安卓手机上查询sqlite数据库,在python或qpython(在安卓手机上开发使用python版本,类似的有kivy,sl4a等)中使用sqlite3,如何使用like语句进行动态查询呢?

通过搜索网络/论坛/贴吧都没有找到好的解决方案,最后在上面的网站中找到只言片语,即刻就解决了。

部分代码参考自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html

#qpy:console
#qpy:2
import sqlite3
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
cx = sqlite3.connect("/storage/.../scripts/test.db")   '此处需要自己改写相应的存储路径
cu = cx.cursor()
#cu.execute("create table cat(id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")
#for t in[(0,10,'abc','Yu'),(1,20,'ca','Xu')]:
#    cx.execute("insert into cat values (?,?,?,?)", t)
#cx.commit()
d =raw_input("name:")
cu.execute("select * from cat where  name like '%"+d+"%'")
print cu.fetchall()



execute方法是可以带参数查询的

参考自:http://tieba.baidu.com/p/3312638099


比如:

cu.execute("select * from table where name=%s"%uname)

应修改为如下形式:

cu.execute("select * from table where name=?", (uname, ))
这个(uname, )参数类型, 必须是元组!~
uname 字符串类型必须是unicode~
保险一点可以这样:
cu.execute("select * from table where name=?", (unicode(uname), ))


转载请注明出处!