-1

我需要在函数内将值从一个函数传递到下一个函数。

例如(我的 IRC 机器人被编程为响应频道中的命令):

def check_perms(nick,chan,cmd):
  sql = "SELECT `"+ cmd +"` FROM permissions WHERE nick = '"+ nick +"' and chan = '"+ chan +"'" # This returns 0
  #sql = "SELECT `restart` FROM permissions WHERE nick = 'Me' and chan = '#mychan'" # this works as intended
  cursor.execute(sql)
  result = cursor.fetchall()
  for row in result:
     if (row[0] == 1): # Nick logged in and has permission
        return 1 
     else: # nick does not have permissions
        return 0

def com_restart(nick,chan):
  perm = check_perms(nick,chan,"restart")
  if (perm == 0): # nick did not have permission
     irc.send("NOTICE "+ nick +" :Permission denied.\n")
  elif (perm == 1): # nick has permission
     irc.send("PRIVMSG "+ chan +" :I've been asked to restart myself by "+ nick +".\n")

nick = "Me" # This is determined by a bunch of regex splits and such
chan = "#mychan" # This is determined by regex splits as well
com_restart(nick,chan)

但是,当我尝试这个时,似乎这些值没有传递给 SQL 查询,所以它返回 0。

感谢您的任何帮助,您可以提供。

编辑 - 添加了我现在正在使用的代码。

4

2 回答 2

0

我不太确定这行代码:

sql = "SELECT `"+ cmd +"` FROM permissions WHERE nick = '"+ nick +"' and chan = '"+ chan +"'" # This returns 0

您似乎正在尝试确保查询字符串的格式正确。但这不是必需的。您可以连接您的字符串查询,它会像这样正常工作:

sql = "SELECT " + cmd + " FROM permissions WHERE nick = " + nick + " and chan = " + chan

观察查询语句中的任何地方都没有单引号。

于 2012-01-12T04:59:52.197 回答
0

你是什​​么意思字符串“sql”“返回零” - 字符串不是函数或表达式,所以它不会“返回”任何东西。字符串只是一个文字值。

你是说 cursor.execute() 返回零?“光标”等于什么?您是否正确地将“光标”对象初始化为其他地方?

如果 "cursor" 是一个全局对象,您可能必须这样声明它,如下所示:

全局光标

否则您将无法对其进行更改。

除此之外,我无法弄清楚您在做什么或出了什么问题。

于 2012-01-12T03:46:38.457 回答