2012-01-12 29 views
-1

我需要从函数内的一个函数传递值到下一个函数。将值传递给函数中的函数python

例如(我的IRC bot的编程,以在通道响应命令):

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.

感谢您提供任何帮助。

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

+2

你有没有打电话给你的功能?如果不是的话,什么都不会发生。 – simchona 2012-01-12 01:53:50

+2

当涉及到语法时,你的代码有多个问题,但除此之外,你在哪里调用y?在初始化foo和bar之后,您需要调用y(foo,bar)。 – Yuushi 2012-01-12 01:54:43

+2

请发布实际的代码,真实的相应的错误信息,真实描述它应该做什么,实际发生的真实描述,真实的事情。 – 2012-01-12 03:04:11

回答

0

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

你是说cursor.execute()返回零吗?什么是“光标”等于?你是否正确地初始化“光标”对象到别的地方?

如果“光标”是一个全局对象,你可能必须将其声明为这样的,就像这样:

全球光标

,否则你将无法进行更改。

除此之外,我无法弄清楚你在做什么或错在哪里。

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 

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