2012-01-12 6 views
-1

Мне нужно передать значения из одной функции в другую из функции.Передача значений функции из функции в python

Например (мой 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.

Спасибо за любую помощь, которую вы можете предоставить.

EDIT - Добавлен код, с которым я работаю, поскольку он стоит прямо сейчас.

+2

Вы когда-нибудь называли свои функции? Если нет, ничего никогда не произойдет. – simchona

+2

У вашего кода есть несколько проблем, когда дело доходит до синтаксиса, но кроме того, где вы звоните? Вам понадобится вызов типа y (foo, bar) после инициализации foo и bar. – Yuushi

+2

Пожалуйста, разместите реальный код, реальные соответствующие сообщения об ошибках, реальные описания того, что он должен делать, реальные описания того, что на самом деле происходит, что-то реальное. –

ответ

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 

Заметим, что нет одинарные кавычки везде в операторе запроса.

Смежные вопросы