首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:并不是在字符串格式化期间、在将数据上载到web sql server期间转换的所有参数,

TypeError:并不是在字符串格式化期间、在将数据上载到web sql server期间转换的所有参数,
EN

Stack Overflow用户
提问于 2017-04-28 11:24:29
回答 2查看 916关注 0票数 2
代码语言:javascript
复制
import pymysql as psl
con6s = psl.connect(host='myhost',database='mydatabase',user='usr',passwd='12345')
c6s = con6s.cursor()
c6s.execute( "INSERT INTO %s (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt) VALUES(?,?,?,?,?,?,?,?,?,?)" % (str(db)), (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))
con6s.commit()
con6s.close()
代码语言:javascript
复制
File "C:/Users/Bwrl/Desktop/al/Time_wither_server_upload/testdb.py", line 134, in cld_sd (str(db)), (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))

File "C:\Users\Bwrl\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymysql\cursors.py", line 164, in execute query = self.mogrify(query, args)

File "C:\Users\Bwrl\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymysql\cursors.py", line 143, in mogrify query = query % self._escape_args(args, conn)

TypeError: not all arguments converted during string formatting

我反复检查了所有这些变量多次,所有变量的类型都是可以的.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-28 11:32:40

你的execute电话出问题了。

您已经使用string formatexecute args混合了%

您需要将%替换为,,并使用string.formatstring format移出。

代码语言:javascript
复制
 sql_cmd = """INSERT INTO 
               {} (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt) 
                   VALUES(?,?,?,?,?,?,?,?,?,?)""".format(table_name)

 c6s.execute(sql_cmd, (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))

cursor.execute原型

代码语言:javascript
复制
 cursor.execute(sql, (args,))

这是官方文件

票数 1
EN

Stack Overflow用户

发布于 2017-04-28 11:38:12

在这个.execute调用中,您应该只将db传递给%字符串内插运算符,但是%认为您也在尝试插值这些其他变量,因此您需要更改括号:

代码语言:javascript
复制
c6s.execute(("INSERT INTO %s (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt) VALUES(?,?,?,?,?,?,?,?,?,?)" % str(db)), (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))

如果db是一个可以简化为

代码语言:javascript
复制
c6s.execute(("INSERT INTO %s (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt) VALUES(?,?,?,?,?,?,?,?,?,?)" % db), (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))

虽然我倾向于把它分成两部分,以便更容易读懂:

代码语言:javascript
复制
cmd = ("INSERT INTO %s (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt) "
    "VALUES(?,?,?,?,?,?,?,?,?,?)" % db)
c6s.execute(cmd, (stmp,dat,tm,tc,mc,sd,rp,st,stf,stt))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43679070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档