0

我正在尝试使用 webpy 开发博客。

def getThread(self,num):
        myvar = dict(numero=num)
        print myvar
        que = self.datab.select('contenidos',vars=myvar,what='contentTitle,content,update',where="category LIKE %%s%" %numero)
      
        return que

我已经使用了您在此网络上回答的一些提示,但我只得到了一个

<type 'exceptions.NameError'> at / global name 'numero' 未定义

Python C:\xampp\htdocs\webpy\functions.py 在 getThread,第 42 行 Web GET http://:8080/ ...

我正在尝试选择一些分类的帖子。有一个带有类别名称和 ID 的表。内容表中有一列采用格式为“1,2,3,5”的字符串。

然后我认为我可以使用 LIKE 语句和一些 %something% 魔法来选择正确的条目。但我有这个问题。

我从构建网络的 .py 文件中调用代码,导入语句正常工作 getThread 在此类中定义:

class categoria(object):
    def __init__(self,datab,nombre):
        
        self.nombre = nombre
        self.datab = datab
        self.n = str(self.getCat()) #making the integer to be a string 
        self.thread = self.getThread(self.n)
        return self.thread
    
    def getCat(self):
        '''
        returns the id of the categorie (integer)
        '''
        return self.datab.select('categorias',what='catId', where='catName = %r' %(self.nombre), limit=1)
4

1 回答 1

1

请检查db.select( http://webpy.org/cookbook/select ) 的正确语法,您不应使用“%”格式化查询,因为它会使代码容易受到 sql 注入的影响。相反,将 vars 放入 dict 并$在查询中引用它们。

myvars = dict(category=1)
db.select('contenidos', what='contentTitle,content,`update`', where="category LIKE '%'+$category+'%'", vars=myvars)

将产生这个查询:

SELECT contentTitle,content,`update` FROM contenidos WHERE category LIKE '%'+1+'%'

请注意,我反引号update是因为它是 SQL 中的保留字。

于 2013-03-26T05:36:50.937 回答