Butpy TypeError%D格式需要一个数字,而不是str,其次是无返回值



我刚刚开始在10.13.2上使用tautpy。我使用了conda pymysql包(pymysql和pymysql-0.8.0.0.0-py2.7.egg-info(,并将它们放在anaconda的站点包装中,因此Tableau将能够连接到DB,检索数据集和数据集和数据集和在计算的字段中保持。

我最初尝试了MySQL.Connector,就像我在Pycharm和CLI中一样,但是Taudpy使用了Anaconda,它没有Mysql的站点包。

无论如何,它最初连接到返回:

的tubpy服务器
An error occurred while communicating with the Predictive Service.

但是,这很快就会是接下来的两行:

Error processing script
TypeError : %d format: a number is required, not str

我已经对上述错误进行了一些挖掘,而我尝试过的一切都会产生相同的错误。我找到了解决方案,但最后还有另一个错误。

SCRIPT_REAL("
import pymysql
db = pymysql.connect(
                     host='localhost',
                     port='9999',
                     user='usern',
                     passwd='passw',
                     db='someDb'
                     )
cur = db.cursor()
t1 = int(0)
t2 = datetime.datetime(2018, 2, 1)
sqlStr = 'select distinct APPL_ID, APPL_SUBMIT_DT from APPL_APP where APPL_ACTIVE_FLAG > %d and APPL_SUBMIT_DT >= %d' % (t1, t2)
cur.execute()
for row in cur.fetchall():
    print row
db.close()
",
COUNT([Appl Id])
)

我不明白为什么脚本会返回这样的错误,直到我在pycharm中运行它。我的端口号需要是一个数字而不是字符串。

import pymysql
db = pymysql.connect(
                     host='localhost',
                     port=9999,
                     user='usern',
                     passwd='passw',
                     db='someDb'
                     )
cur = db.cursor()
t1 = int(0)
t2 = (2018-02-01)
sqlStr = 'select distinct APPL_ID, APPL_SUBMIT_DT from APPL_APP where APPL_ACTIVE_FLAG > %d and APPL_SUBMIT_DT >= %d' % (t1, t2)
cur.execute(sqlStr)
for row in cur.fetchall():
    print row
db.close()

当然,虽然我可以看到所有数据通过Tabpy Server返回的所有数据,但它以以下内容完成:

(3957423, datetime.datetime(2018, 2, 27, 15, 30, 16))
(3957424, datetime.datetime(2018, 2, 27, 15, 31))
(3957425, datetime.datetime(2018, 2, 27, 15, 31, 4))
(3957426, datetime.datetime(2018, 2, 27, 15, 31, 55))
(3957428, datetime.datetime(2018, 2, 27, 15, 32, 17))
(3957429, datetime.datetime(2018, 2, 27, 15, 32, 18))
None
ERROR:__main__:{"info": null, "ERROR": "Error running script. No return value"}

那怎么可能?那里有明显的数据。

要使您的脚本在Tableau工作,您需要使用Python命令return something,其中某些内容是包含适当返回类型的列表。否则这些值可能存在于Python中,但Tableau看不到它们。

在您的情况下,您需要使用类似代码构建列表:

ReturnValues=[]
for row in cur.fetchall():
   ReturnValues.append(row)
return ReturnValues

然后,完整的行列表将发送回Tableau。但是,您可能仍然有问题,因为Tableau将期望与发送给Python的输入列表相匹配的特定尺寸列表。您没有这样的输入,可能会引起问题。

相关内容

  • 没有找到相关文章

最新更新