python查询数据库结果返回
2015-04-21 15:38
351 查看
python操作数据库,在查询中遇到几个令人恶心的问题,语句都没问题,就是报错。
sql_user_item_operationsdays = sql_user_item_operationsdays = 'select sum(opernum) as numbers from %s where user_id=%d and behavior_type=%d and diffdays>%d'
usertype = [2]#[1,2,3,4]
dayList = [26]#[26, 22, 15, 8, 0]
for type_line in usertype:
for day_line in dayList:
sql = sql_user_item_operationsdays % (filename, user_id, type_line, day_line)
print sql
sqlnum = self.cur.execute(sql)
print 'sqlnum is %d' % sqlnum
result = self.cur.fetchone()
print 'result is ' + result
temp = self.result_fetch(sqlnum, result)
print 'temp is %d' % temp
user_featuresList.append( float(temp))
上面代码是我写的一个提取特征部分代码,最终发现原来是cur.execute()执行sql语句返回结果的问题;一般情况sqlnum=cur.execute(sql),
sql语句若查不到结果,返回0;但是上面怎么就不返回0,而是返回1,我再三验证,原来还真是1,但是result=cur.fetchone()返回的却是((None,),),
最终发现select sum()这里返回时,若查不到会返回1,但是result元组中存的是NontType类型变量None,因此程序一直报错。
conn = mysqldb.connect(host='localhost', user='root',passwd='',port=3306)
cur = conn.cursor()
conn.select_db('tianchi_420')
sql1 = 'select sum(opernum) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '----------------------------'
sql1 = 'select * from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '----------------------------'
sql1 = 'select count(*) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '-------------------------------'
结果如下:
select sum(opernum) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
1
((None,),)
----------------------------
select * from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
0
()
----------------------------
select count(*) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
1
((0L,),)
注意三者返回的都有区别;
sql_user_item_operationsdays = sql_user_item_operationsdays = 'select sum(opernum) as numbers from %s where user_id=%d and behavior_type=%d and diffdays>%d'
usertype = [2]#[1,2,3,4]
dayList = [26]#[26, 22, 15, 8, 0]
for type_line in usertype:
for day_line in dayList:
sql = sql_user_item_operationsdays % (filename, user_id, type_line, day_line)
print sql
sqlnum = self.cur.execute(sql)
print 'sqlnum is %d' % sqlnum
result = self.cur.fetchone()
print 'result is ' + result
temp = self.result_fetch(sqlnum, result)
print 'temp is %d' % temp
user_featuresList.append( float(temp))
上面代码是我写的一个提取特征部分代码,最终发现原来是cur.execute()执行sql语句返回结果的问题;一般情况sqlnum=cur.execute(sql),
sql语句若查不到结果,返回0;但是上面怎么就不返回0,而是返回1,我再三验证,原来还真是1,但是result=cur.fetchone()返回的却是((None,),),
最终发现select sum()这里返回时,若查不到会返回1,但是result元组中存的是NontType类型变量None,因此程序一直报错。
conn = mysqldb.connect(host='localhost', user='root',passwd='',port=3306)
cur = conn.cursor()
conn.select_db('tianchi_420')
sql1 = 'select sum(opernum) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '----------------------------'
sql1 = 'select * from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '----------------------------'
sql1 = 'select count(*) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26';
print sql1
sqlnum = cur.execute(sql1)
print sqlnum
result = cur.fetchall()
print result
print '-------------------------------'
结果如下:
select sum(opernum) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
1
((None,),)
----------------------------
select * from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
0
()
----------------------------
select count(*) from user_item_operations29days where user_id=100509623 and behavior_type=2 and diffdays>26
1
((0L,),)
注意三者返回的都有区别;
相关文章推荐
- python查询数据库返回结果情况
- python3 apistar 创建web api 根据前端用户输入返回数据库查询结果
- MySQL中数据结果集分页功能的实现方法;数据库查询返回特定结果即分页查询
- python查询数据库,打印查询结果过程中出现'NoneType' object is unsubscriptable
- Python 处理数据库返回结果
- 用python操作mysql数据库(之数据查询结果返回字典类型)
- 好947 Mybatis 配置resultMap 带参数查询Map 注意selectOne数据库返回结果一条数据库 否则会报错
- Python Sqlite3以字典形式返回查询结果的实现方法
- C语言查询数据库返回结果中文乱码
- 如何封装一个数据库查询,并把结果返回给调用者
- Python中让MySQL查询结果返回字典类型的方法
- PHP简单获取数据库查询结果并返回JSON
- Python中让MySQL查询结果返回字典类型的方法
- Python:把关系型数据库的查询结果转成dataframe
- ThinkPHP查询两个数据库表,查询结果复杂json拼接及返回
- 【python爬虫】根据查询词爬取网站返回结果
- mybatis查询数据库返回结果为空
- json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)
- Python查询数据库,中文的结果显示不出来
- 在使用mybatis时遇到查询结果返回为空的情况,但是查数据库能查到