* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Linux |
|
cubrid 9.3 |
|
[도움말]-[버전정보] 확인 |
|
python 3.6 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
큐브리드 DB에 python script 로 접근하여 table 정보를 가져오려고 하는데,
cursor.close() 단계에서 아래처럼 Exception error 가 발생합니다.
Exception ignored in: <bound method BaseCursor.__del__ of <CUBRIDdb.cursors.Cursor object at [숫자와 영문자혼합]>>
Traceback (most recent call last): File "[큐브리드path]/CUBRIDdb/cursors.py",
line 30, in __del__ self.close() File "[큐브리드path]/CUBRIDdb/cursors.py",
line 39, in close self.__check_state() File "[큐브리드path]/CUBRIDdb/cursors.py",
line 34, in __check_state raise Exception("The cursor has been closed. No operation is allowed any more.")
Exception: The cursor has been closed. No operation is allowed any more."
정말 간단하게 conn() 으로 연결하고 cursor()로 데이터를 불러오는 것이라 cursor.close() 가 미리 닫힐만한 코드가 존재하지 않는데도 해당 에러가 발생합니다.
에러가 발생하여도 CUBRID DB 에 접근해서 테이블에서 정보를 가져오는건 정상적으로 이루어집니다만, 로그에 에러가 남아있는게 불편해서 혹시 해당 에러를 없앨 수 있는 방법이 있는지 문의 드립니다.
with 커맨드를 사용하여 로컬 파일을 열어 CUBRID DB 에서 가져온 내용을 로컬파일에 저장해주는데, cursor, conn 모두 with 커맨드를 사용하기전 define 하며, execute() 와 fetchall() 커맨드도 with 커맨드 사용전에 define 한 후, with 커맨드에서는 cursor.fetchall() 해준 값만 따로 가져와서 로컬 파일에 저장해줘서 with 커맨드로 인한 cursor.close()가 된것은 아닌것 같은데 원인을 잘 모르겠습니다.
큐브리드 DB에 python script 로 접근하여 table 정보를 가져오려고 하는데,
cursor.close() 단계에서 아래처럼 Exception error 가 발생합니다.
=> 회원님이 어떻게 작성 하셨는지 잘 모르겠지만 아래에 간단한 예시 입니다.
간단한 예시)
# CUBRID 드라이버 로드
import CUBRIDdb
# connect 함수를 이용하여 커넥션 생성
conn = CUBRIDdb.connect('CUBRID:127.0.0.1:30000:demodb:::', 'dba', '')
# cursor() 함수를 이용해 커서 객체 리턴
# 커서는 데이터베이스 내의 위치를 포인트 시켜주어 외부 명령을 수행하는 역할을 한다.
# (SQL문 수행 및 데이터 로드 시 커서가 사용된다.)
cur = conn.cursor()
# 현재 커서에서 모든 row를 rows 변수에 저장
cur.execute('query문 작성')
rows = cur.fetchall()
# for문을 통해 rows에 저장된 데이터들에 대하여 하나씩 row 변수에 차례로 배정 (rows : 결과테이블, row : 행 )
for row in rows:
print row # row 출력
#현재 커서 해제
cur.close()
#현재 커넥션 해제
conn.close()
정말 간단하게 conn() 으로 연결하고 cursor()로 데이터를 불러오는 것이라 cursor.close() 가 미리 닫힐만한 코드가 존재하지 않는데도 해당 에러가 발생합니다.
에러가 발생하여도 CUBRID DB 에 접근해서 테이블에서 정보를 가져오는건 정상적으로 이루어집니다만, 로그에 에러가 남아있는게 불편해서 혹시 해당 에러를 없앨 수 있는 방법이 있는지 문의 드립니다.
=> cubrid.conf 내에 파라미터 추가 : error_log_level=SYNTAX