求助一个关于mysql中用变量代替参数的问题

小蟒蛇 发布于 2017/03/31 18:37
阅读 283
收藏 0



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

加载中
0
您的好友
您的好友

不要用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

 

小蟒蛇
小蟒蛇
你好,谢谢你的建议。我之前用过tuple,list,str。三个都不行,请问你能看出其他地方有错吗?我用python3.4和mysql5.7
0
小蟒蛇
小蟒蛇

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

不要用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'

 

 

0
柯林君
柯林君
虽然不是很懂Python,但是我觉得你execute的时候不应该带data1
小蟒蛇
小蟒蛇
我试了一下删去data1,还是报错TypeError: not all arguments converted during string formatting(TypeError:在字符串格式化期间不转换所有参数)
小蟒蛇
小蟒蛇
哦,这样的。(sql,data1)的意思是:执行sql里面的语句,然后语句中的%s,用data1来填充的意思。大概意思是这样,我不知道这样理解有没有错,如果我错了的话,希望大神们指点一下。
0
柯林君
柯林君
还有就是拼接sql时,是不是应该用字符串是不是该用单引号包起来呢
小蟒蛇
小蟒蛇
我试了一下,改成“sql,data1”还没调试pycharm就报错了
0
您的好友
您的好友

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

不要用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都可以 

 

返回顶部
顶部