5
回答
求助一个关于mysql中用变量代替参数的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   



我修改了一整天,仍然不知道问题出在哪里,求各路大神指导指导,谢谢~~!!

举报
小蟒蛇
发帖于9个月前 5回/199阅

不要用list  用 tuple

data1 = tuple(input("请输入数据"))

 

arr = [1,2]
tup = (1,2)

"%s %s" % arr   # TypeError: not enough arguments for format string


"%s %s" % tuple(arr) # OK
"%s %s" % tup # OK
"%s %s" % (tup) # OK

 

--- 共有 1 条评论 ---
小蟒蛇你好,谢谢你的建议。我之前用过tuple,list,str。三个都不行,请问你能看出其他地方有错吗?我用python3.4和mysql5.7 9个月前 回复

引用来自“您的好友”的评论

不要用list  用 tuple

data1 = tuple(input("请输入数据"))

 

arr = [1,2]
tup = (1,2)

"%s %s" % arr   # TypeError: not enough arguments for format string


"%s %s" % tuple(arr) # OK
"%s %s" % tup # OK
"%s %s" % (tup) # OK

 

我更多的觉得是后面sql那段有问题,还有开头赋值给data1,也有问题,但是改来改去还是那样,有时候不报错,但是就不能写进数据库,我的输入格式是'xxx','xxx'

 

 

虽然不是很懂Python,但是我觉得你execute的时候不应该带data1
--- 共有 2 条评论 ---
小蟒蛇我试了一下删去data1,还是报错TypeError: not all arguments converted during string formatting(TypeError:在字符串格式化期间不转换所有参数) 9个月前 回复
小蟒蛇哦,这样的。(sql,data1)的意思是:执行sql里面的语句,然后语句中的%s,用data1来填充的意思。大概意思是这样,我不知道这样理解有没有错,如果我错了的话,希望大神们指点一下。 9个月前 回复

引用来自“您的好友”的评论

不要用list  用 tuple

data1 = tuple(input("请输入数据"))

 

arr = [1,2]
tup = (1,2)

"%s %s" % arr   # TypeError: not enough arguments for format string


"%s %s" % tuple(arr) # OK
"%s %s" % tup # OK
"%s %s" % (tup) # OK

 

引用来自“小蟒蛇”的评论

我更多的觉得是后面sql那段有问题,还有开头赋值给data1,也有问题,但是改来改去还是那样,有时候不报错,但是就不能写进数据库,我的输入格式是'xxx','xxx'

 

 

对的  后面那个excute 也有问题     这里你相当于给字符串格式化了两次数据  第二次的时候就报错了   你吧sql那个字符串print出来看看就明白了  如果你在第一次就传入参数的话 参数还要加上引号 

下面这两个都可以  你吧两个搞混了

# 直接在字符串格式化传入值
data = tuple(...) 
sql = """ insert .... values ("%s","%s") """ % data   # 字符串格式化使用list会报错
print sql # 这样就可以看明白了
cursor.excute(sql)


# 使用工具自带的方法传入值
data = list(...) 
sql = """insert .... values ("%s","%s")""" 
cursor.excute(sql, data)    # 这个使用list和tuple都可以 

 

顶部