Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python格式化SQL子句

Python格式化SQL子句
EN

Stack Overflow用户
提问于 2018-06-11 14:51:46
回答 1查看 172关注 0票数 0

我的函数通过pymysql与存储在本地主机上的SQL数据库进行通信。我知道有类似的关于格式化SQL部分的文章,特别是this one,但是谁能给出解决方案呢?始终获取TypeError:不能将元组连接到字节。我想是带有WHERE条款的某事物。

代码语言:javascript
运行
AI代码解释
复制
def likeMovement(pID):
    print("Give a rating for the movement with #id:%s" %pID)
    rate=input("Give from 0-5: ")
    userID=str(1)
    print(rate,type(rate))
    print(pID,type(pID))
    print(userID,type(userID))
    cursor=con.cursor()
    sqlquery='''UDPATE likesartmovement SET likesartmovement.rating=%s WHERE 
    likesartmovement.artisticID=? AND likesartmovement.userID=?''' % (rate,), 
    (pID,userID)
    cursor.execute(sqlquery)

TypeError:不是所有在字符串格式化期间转换的参数

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 15:00:31

问题在于,您将(pID,userID)存储为存储在sqlquery中的元组的一部分,而不是将它们作为参数传递给execute

代码语言:javascript
运行
AI代码解释
复制
sqlquery='''UDPATE likesartmovement SET likesartmovement.rating=%s WHERE 
    likesartmovement.artisticID=? AND likesartmovement.userID=?''' % (rate,)
cursor.execute(sqlquery, (pID,userID))

如果你举一个简单的例子,你可能会更清楚地看到为什么这些是不同的:

代码语言:javascript
运行
AI代码解释
复制
s = 'abc'
spam(s, 2)

s = 'abc', 2
spam(s)

很明显那两个人做的不是一回事。

当我们在这的时候:

  • 你必须拼写正确的UPDATE
  • 您通常希望对SET子句使用查询参数,其原因与WHERE子句的原因完全相同。
  • 您不需要在单表操作中包括表名,也不允许在单表更新中将表名包含在SET子句中。

所以:

代码语言:javascript
运行
AI代码解释
复制
sqlquery='''UDPATE likesartmovement SET rating=? WHERE 
    artisticID=? AND userID=?'''
cursor.execute(sqlquery, (rating, pID, userID))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50807088

复制
相关文章
vmware workstation 克隆后网卡eth0不能正常工作
解决方法如下 修改/etc/udev/rules.d/70-persistent-net.rules 将eth0这行注释掉或者删除, 这里记载的还是克隆系统时的MAC地址,但是新启动的系统MAC已经更改, 将NAME="eth1" 改为 “eth0”,ATTR 标记的MAC地址,这个是虚拟机为这个虚拟网卡分配的MAC,用上面的MAC替换掉 /etc/sysconfig/network-scripts /ifcfg-eth0中的MAC 然后重启即可 还有一个办法,不用eth0,直接用eth1等,把/etc/sysconfig/network-scripts/ifcfg-eth0复制成/etc/sysconfig/network-scripts/ifcfg-eth1
三杯水Plus
2018/11/14
2.5K0
Linux下shell不能正常执行
看上面信息【with CRLF line terminators】,大概能定位到问题
小码匠
2022/06/16
4.3K0
错题本:ConstraintLayout 不能正常显示
这个属性是 app:layout_constraintLeft_toLeftOf="@id/oa_setting_group_tv_add" 写成了自己在自己左边了。
佛系编码
2019/12/11
1.9K0
错题本:ConstraintLayout 不能正常显示
uploadifive参数fileType不能正常解析
鉴于html5已经是主流,flash终究是快湮灭了。所以现在上传也从uploadify更换成了uploadifive了,价值5美刀。在上传的过程中经常需要限制上传文件的类型,就需要用到参数fileType,于是就看下了官方手册上的介绍,文档上的对fileType参数定义的类型是string,且不是必须参数。经过拷贝demo的代码,发现根本无效,任何文件类型还是能够被上传。结果耗时3小时15分钟,翻遍国内外技术网站,最终确认uploadifive的fileType参数是个BUG,官方文档也标错了。经过反复测试,要想实现文件格式限制效果,需要使用json类型数据进行配置,才能实现参数正常解析。
世纪访客
2018/08/02
1.1K0
uploadifive参数fileType不能正常解析
配置SSL证书后,Nginx的HTTPS 不能正常工作的原因有哪些
申请ssl证书,配置nginx支持https与证书,可是访问https的nginx总是出现错误,也导致小程序发https请求失败,这是什么原因呢?
网盾JoySSL小张
2023/08/31
5K0
正常的工作流程
修改文件,将它们更新的内容添加到索引中。 $ git add file1 file2 file3 你现在为commit做好了准备,你可以使用git diff命令再加上–cached参数,看看哪些文件将被提交(commit)。 (如果没有–cached参数,git diff会显示当前你所有已做的但没有加入到索引里的修改。)你也可以使用git status命令来获得当前项目的一个状况。
用户3004328
2018/09/06
7810
记录一下fail2ban不能正常工作的问题 & 闲扯安全
在加载配置这个事情上,许多linux应用程序只需要发一个信号,应用自己就完成配置重载,无需重启中断服务,但是依然有很多程序并不支持。
horsley
2022/08/16
3.7K0
Apache编译后无法正常工作
因为某个场景的需求,要在一个国产系统Rocky4.2(国产凝思4.2操作系统)上安装Apache,虽说此系统是基于Redhat 5.8开发的,但是发现yum安装源包管理,RPM命令倒是能用,但是底层依赖完全没有,这就尴尬了,so,只能源码编译安装了。
后场技术
2020/09/03
2.9K0
关于GPU VNC不能正常使用的说明
https://cloud.tencent.com/document/product/560/36207
Windows技术交流
2022/09/07
3.8K0
Ueditor后端配置项没有正常加载,上传插件不能正常使用!的解决过程。
如图:单图上传为灰色,多图上传提示 后端配置项没有正常加载,上传插件不能正常使用!
德顺
2019/11/13
17.7K0
Ueditor后端配置项没有正常加载,上传插件不能正常使用!的解决过程。
关于IIS gzip不能正常启用,该怎么解决
独立主机/VPS 一键开启IIS的GZIP方法 http://www.jb51.net/article/30151.htm
会长君
2023/04/26
9520
Confluence 6 € 欧元字符集不能正常显示
€ (euro) 标记 是一个 3 字节字符,在 (UTF-8)中这个字符被表示为 0xE2, 0x82, 0xAC。
HoneyMoose
2019/01/30
1K0
tomcat能正常启动,但是不能访问http://localhost:8080
最近遇到一个问题,下载了一个tomcat7.0.23版本的软件(不是官网下载的),环境变量设置正确但是都是不能访问http:localhost:8080.下面是我解决方法:
全栈程序员站长
2022/06/29
2.5K0
关于的MongoDB Compass Community 不能够正常连接
解决办法2:     a.先看服务启动没有,如果没有启动服务先启动服务:net stat MongoDB     b.如果服务已经启动了,那有可能是上次不正常关闭mongo,导致存放数据的文件被占用了,被锁住了。只需将D:\MongoDB\db中的mongod.lock文件删除掉。重新启动服务net stat MongoDB即可
拓荒者
2019/03/14
2.7K0
pyCharm全局搜索不能正常使用的解決方法
提示:pyCharm全局搜索不能使用的主要原因是热键被占用 通过百度搜索到的答案一般都是搜狗输入法热键占用的原因导致pyCharm全局搜索不能使用 但是我的电脑并没有安装搜狗输入法 并且经过排查,所有的外部软件的热键都没有占用ctrl + shift + f
全栈程序员站长
2022/09/04
1.8K0
pyCharm全局搜索不能正常使用的解決方法
建站小技巧|添加了产品为什么不能正常显示?
之前我们有分享过【如何正确的发布文章?】近期许多客户反馈希望能都出几期视频教程,因此本期我们接着分享如何正确发布产品。  为什么添加了产品,预览时无法正常打开? 腾讯云网站建设系统为了更好的满足用户自定义需求,产品详情页排版结构可支持自定义。因此部分企业用户在使用的时候以为我在后台发布了产品,应该就可以正常打开了,实际如需产品正常打开,还需要进行以下步骤操作,下面一起跟着视频了解下吧! ①进入网站编辑页面,添加适合的产品列表模块; ②进入产品管理,添加产品分类,为对应分类添加产品; ③刷新页面,即可自动
腾讯云DNSPod团队
2022/02/08
1.1K0
CentOS7.0下,apache不能正常运行的解决思路
/usr/local/apache/bin/apachectl startapache
一朵灼灼华
2022/08/05
1.6K0
无线鼠标非硬件原因显示驱动异常不能正常使用。
1、点击[确定] 2、点击[小图标] 3、点击[设备管理器] 4、点击[鼠标和其他指针设备] 5、点击[扫描检测硬件改动] 6、点击[鼠标和其他指针设备] 7、点击[ELAN PS/2 Port Input Device] 8、点击[更新驱动程序] 9、点击[自动搜索更新的驱动程序软件] 10、点击[HID-compliant mouse] 11、点击[更新驱动程序] 12、点击[自行搜索更新的驱动程序软件] 13、点击[关闭]
裴来凡
2022/05/28
2.8K0
无线鼠标非硬件原因显示驱动异常不能正常使用。
EasyCVR分屏播放不能正常使用是什么原因?
EasyCVR视频融合云服务支持H.265编码视频Web直播,以及RTSP、RTMP、FLV、HLS视频流输出,可实现远程PC端(Windows、Mac、Linux)、手机端(Android、iOS)、微信端浏览功能。监控人员可在任意时间、任意地点,通过公用网络查看监控区域的实时图像。电脑网页客户端支持单画面、多画面显示,用户可选择任意一路或多路视频观看,视频窗口数量1、4、9、16个可选。
TSINGSEE青犀视频
2022/03/11
6980
点击加载更多

相似问题

>=不能正常工作

21

不能正常工作

11

不能正常工作

21

*()不能正常工作

27

不能正常工作

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文