2012-01-12 4 views
-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.

도움을 주셔서 감사합니다.

EDIT - 제가 지금하고있는 코드를 추가했습니다.

+2

기능을 부르는 사람이 있습니까? 그렇지 않다면 아무 일도 일어나지 않을 것입니다. – simchona

+2

구문과 관련하여 코드에 여러 가지 문제가 있지만 그 외에도 y를 어디에서 호출합니까? foo와 bar를 초기화 한 후에 y (foo, bar)와 같은 호출이 필요합니다. – Yuushi

+2

실제 코드, 실제 해당 오류 메시지, 수행해야 할 작업에 대한 실제 설명, 실제 발생 상황에 대한 실제 설명, 실제 내용을 게시하십시오. –

답변

0

"sql"문자열이 "0"을 반환한다는 것을 의미합니까? 문자열은 함수 또는 표현식이 아니므로 아무 것도 반환하지 않습니다. 문자열은 단지 리터럴 값입니다.

cursor.execute()가 0을 반환한다고 말하는가? "커서"란 무엇입니까? "커서"개체를 다른 곳으로 올바르게 초기화합니까?

"커서"이 같은, 같은 선언 할 수있는 전역 객체 인 경우

글로벌 커서

그렇지 않으면 당신이 그것을 변경할 수 없습니다.

나는 당신이하고있는 일이나 잘못 된 것이 무엇인지 알 수 없다.

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 

쿼리 문의 아무 곳이나 작은 따옴표가 없는지 확인합니다.

관련 문제