Background Image

FORUM

조회 수 186 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Linux 
CUBRID Ver.
cubrid 9.3
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
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()가 된것은 아닌것 같은데 원인을 잘 모르겠습니다.

 

 

  • ?
    엄기호 2023.06.14 14:42
    큐브리드를 이용해주셔서 감사합니다.

    큐브리드 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
  • ?
    힘내자화이팅 2023.06.19 10:24

    다음과 같은 코드를 이용해서 테스트를 해봤습니다.

    import CUBRIDdb

    table_nm=[테이블명]
    db_host=[호스트]
    db_port=[포트]
    db_name=[DB명]
    url='CUBRID:'+db_host+':'+db_port+':'+db_name+':::'
    sql = "SELECT * FROM " + table_nm + " limit 10"
    pw=[DB 패스워드]
    conn = CUBRIDdb.connect(url, user='[db_user]', passwd=pw)
    cur = conn.cursor()
    cur.execute(sql)
    row = cur.fetchall()
    print(row)
    cur.close()
    conn.close()



    실행시 output:

    [ sql 쿼리를 날려 DB로부터 SELECT 한 결과 값 ]
    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."

    cur.close() 를 생략시 [ sql 쿼리를 날려 DB로부터 SELECT 한 결과 값 ] 만 출력되고 아래의 에러는 출력되지 않습니다.
    이 경우 cur.close()를 생략하고 진행을 해야할까요?
    try/except 커맨드 추가하여 확인시, cur.close() 를 사용전까지 cur 이 open 상태인것으로 확인되는데 이상하게 cur.close() 만 들어가면 위의 에러가 발생하네요.

     

     

     

    ** CUBRID_Python-9.2.0.0001 패키지가 깔려있는 python 2.7.5 버전으로 테스트시에는 cur.close()를 포함하여도 에러가 발생하지 않습니다.

    ** 위의 테스트는 CUBRID_Python-9.3.0.1 패키지가 깔려있는 python 3.6.12 버전으로 테스트진행하였습니다.

     

  • ?
    오명환 2023.06.20 09:11
    cubrid-python 최신 버전을 다운로드 받으셔서 빌드 후에 사용해보세요.

    [다운로드 URL]
    https://ftp.cubrid.org/CUBRID_Drivers/Python_Driver/11.1.0/Linux/cubrid-python-11.1-latest.tar.gz

    centos7를 기준으로 설명드립니다.

    (1) python3 관련 package install (이미 설치되어 있는 경우 다음 작업을 진행하시면 됩니다.)
    $> yum install python3
    $> yum install python3-devel

    (2) python-cubrid 빌드 및 install
    $> tar xvfz cubrid-python-11.1-latest.tar.gz
    $> cd RB-11.1.0
    $> python3 setup.py build
    $> python3 setup.py install

    (3) sample code 수행
    $> python3 your_sample.py

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 51
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
774 8.4.4 charset. Collation 확인 방법 네오랜덤 2023.05.24 188
773 리눅스에서 내보내기 시 파이프라인 구분자를 통한 출력 문의 1 file JB 2021.03.08 188
772 인덱스가 많이 설정된 데이터 삭제시 오래 걸리는지 여부 1 나라디 2022.06.29 187
771 테이블 파티션나눈후 조회시 에러가 발생합니다. 2 연습용 2021.11.25 186
770 큐브리드 컬럼 길이 문의 6 큐브리드궁금 2021.06.29 186
» cubrid cursor.close() 에러 관련질문 3 힘내자화이팅 2023.06.08 186
768 백업파일 받았는데 복구하는 방법을 모르겠습니다. 4 Ggyak 2023.06.20 186
767 큐브리드 DB이전 1 먹고래 2021.05.11 186
766 마지막 공백 인식 문제입니다. 2 mon 2020.04.10 185
765 큐브리드 메니저 접속시 오류(..최신 버전의 메니저 클라이언트를 이용해주세요) 1 file 푸르른하늘 2020.10.13 185
764 큐브리드에서 오프소스 Talend 사용 가능한 지 문의드립니다. 3 본부장 2021.05.24 185
763 큐브리드 버전 업데이트 관련 문의 2 윤현선 2020.07.30 184
762 쿼리 플랜 cardinality, cost 이상 1 parknnna 2023.02.16 184
761 stored procedure 질문입니다. 3 거북왕 2020.12.11 184
760 HA 구성시 갑자기 master - slave 가 전환됩니다. 1 nagh 2020.10.05 184
759 cmt로 전환 옵션 문의 드립니다. (컬럼 상세정보) 덴드로비움 2017.08.25 183
758 사용자 권한 부여 2 file ozro 2022.08.04 183
757 HA 구성 Master Server csql 에서 insert 시 Slave Server apply 안되는 현상 1 DBS 2021.03.12 182
756 복구가 일부만 되었습니다. 3 도우너19 2022.05.16 182
755 안녕하세요 javaSp를 사용한 프로시저 등록 관련하여 질문드립니다. 1 cubridtest 2019.10.28 181
Board Pagination Prev 1 ... 157 158 159 160 161 162 163 164 165 166 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales