猿问

python sql 问题, 在sql里面用替代

period = '573'
SHYA= sqldf('select PPMONTH, REGION, WEARSEG, sum(uncal_value) as uncal_value \           from Ftable where region in ("Shanghai") and WEARSEG in ("Men","Women")\           and PPMONTH in (period) group by PPMONTH,WEARSEG')
           
在sql里面用 in (period') 为什么没用?

PandaSQLException: (sqlite3.OperationalError) no such column: period [SQL: 'select PPMONTH, REGION, WEARSEG, sum(uncal_value) as uncal_value### 题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?


慕运维8079593
浏览 845回答 3
3回答

红糖糍粑

老铁, 报错中说:no such column: period意思是没有这一列,你是不是没有定义period呀?或者period是个字符串?你没用双引号??或者你把数据贴出来, 我看下

烙印99

SQL不能直接写period,要转成period对应的值字符串'select PPMONTH, REGION, WEARSEG, sum(uncal_value) as uncal_value \    from Ftable where region in ("Shanghai") and WEARSEG in ("Men","Women")\    and PPMONTH in ("{}") group by PPMONTH,WEARSEG'.format(period)

扬帆大鱼

为了防止SQL注入不推荐直接拼sql,需要走占位符的方式,如果你的period是一个字符串,那直接用等于不要用in,如果是个list那需要生成占位符sql='select PPMONTH, REGION, WEARSEG, sum(uncal_value) as uncal_value \           from Ftable where region in ("Shanghai") and WEARSEG in ("Men","Women")\           and PPMONTH in ({}) group by PPMONTH,WEARSEG'.format(','.join(['%s' for _ in period])) cursor.execute(sql, period)
随时随地看视频慕课网APP

相关分类

Python
我要回答