2017-12-01 5 views
0

"Database.db_search (search) NameError : name 'Database'이 정의되지 않았습니다."오류가 계속 발생합니다.NameError : name 'Database'가 정의되지 않았습니다.

아무도 내가 정말 고맙게 생각한다면, 나는 또한 Stack Overflow에 익숙하지 않으므로 질문을하는 전반적인 레이아웃에 관해서는 사과 할 것입니다.

감사합니다.

데이터베이스 파일 :

from Staff import * 

def db_search(self): 
    query = "SELECT * FROM customer_information WHERE Last_Name = %s" 
    cursor.execute(query, (last_name,)) 
    for (Last_Name) in cursor: 
     print(Last_Name) 
    return last_name 

직원 파일 :

from Database import * 
def gett(): 
    search = search_entry.get() 
    Database.db_search(search)` 
+0

내 대답 외에도 일부 순환 가져 오기가 왜 필요한지 묻고 싶습니다. 'Staff'가'Database'를 모두 가져 오는 경우 왜'Database'는'Staff'를 모두 가져와야합니까 ?? –

+0

안녕하세요 그렉, 정말로 내 코드를 살펴볼 시간을 내 주셔서 감사합니다. 프로그램의 다른 곳에서 진행되는 다른 메소드/기능이 있다는 순환 수입이있는 이유입니다. 네가 원한다면 나에게 보여 줄 수 있고 너는 나에게 개선 방법에 대한 조언을 줄 수있다. 시간 동창자를 진심으로 감사드립니다. 다시 한번 감사 드리며 좋은 밤을 보내십시오. – Notorious

+0

안녕하세요. 솔직히 말해서 모든 코드를 살펴보고 개선점을 제안하지 않을 것이며 시간이 없습니다. 제가 말하고자하는 것은 일반적으로 순환 수입은 나쁜 생각입니다 (http://stackabuse.com/python-circular-imports/). 일반적으로 각 모듈의 내용을 검토하면 순환 종속성의 필요성을 제거하는 기능을 함께 그룹화하는 방법을 알게 될 것입니다. 항상 그런 경우는 아니며 때로는 원형 디프 로프를 사용하는 것이 유효하지만 대부분 빈약 한 디자인을 나타내며 부작용/이상한 버그를 유발할 수 있습니다. –

답변

1

그냥 그렇게, Database의 모든 내용을 가져온

from Database import * 

를 사용하여 오히려 네임 스페이스 (다른 패키지의 방법 사이 혼란의 가능성을) 오염 결국 당신이 지금 막

db_search(search) 

from module import *를 호출 할 필요가 작업 할 수있는 일을 얻는 것은 정말 권장 패턴이 아니다.

그래서 당신은 당신의 수입 라인을 변경하는 경우 :

import Database 

다음 코드는 잘 작동합니다.

관련 문제