-2

我正在尝试创建一个 Python 程序来查询 URL 并生成 JSON 文件。我需要在来自 SQL 查询的 URL 末尾传递一个参数。

我已经导入了requests库。

当我尝试在 URL 中传递参数时,我收到一条错误消息“TypeError: float argument required, not str”。

查询只产生一列结果:

id   
2
3
4

以下是我想出的:

import MySQLdb
import requests

con=MySQLdb.connect(host="localhost",user="test", passwd="test", db ="mfg")
cur = con.cursor()
select=("select id from tblMfg")

cur.execute(select)
result=cur.fetchall()
for i in result:
    col =i[0]
    col1=str(col)
    url = 'http://appl.xyz.net:8080/app/content/pq/doQuery?solution=nd&path=&file=Test.nd&dataAccessId=1&paramid=%d' % col1
    user = 'abc'
    password ='testgo'
    data = requests.get(url, auth=(user, password))
    json_data=data.json()
    print json_data
4

3 回答 3

2

创建参数留给requests框架:

params = {'solution': 'nd', 'path': '', 'file': 'Test.nd', 'dataAccessId': '1',
          'paramid': str(col[0])}
url = 'http://appl.xyz.net:8080/app/content/pq/doQuery'
user = 'abc'
password ='testgo'
data = requests.get(url, auth=(user, password), params=params)
于 2013-10-23T19:52:36.263 回答
0

当您尝试格式化包含(意外)裸百分号的字符串时,也会出现错误消息“TypeError: float argument required, not str”。
例子:

>>> print "fail 100% for serverid|%s| " % ("a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: float argument required, not str
>>>

“100%”之后的“f”被解释为要求一个浮点参数,而它只是我的污迹省略了第二个百分号。

>>> print "fail 100%% for serverid|%s| " % ("a")
fail 100% for serverid|a|
>>>

工作正常。如果“100%”后面的单词以 d 或 o 或 s 开头,您会收到稍有不同的错误消息。

我很不幸在 2 嵌套的 try-except 中发生了几个调用层,因此错误出现在距离导致它的行一英里远的地方。

于 2015-07-20T18:33:05.003 回答
-1
print ("float_value : %f , digit_value : %d , string_value : %s"  % (3.4, 5, 'somestring'))
float_value : 3.400000 , digit_value : 5 , string_value : somestring
于 2016-08-24T20:23:58.163 回答