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 47
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3874 운영db 접근이 되지 않아 문의 드립니다 1 file 찬이 2023.07.20 99
3873 홈경로 databases.txt 질문드립니다 1 큐브리드드 2023.07.17 92
3872 Cubrid admin 접속 제한 문의드립니다. 2 데굴v 2023.07.13 118
3871 특정단어 삭제 6 ddmmdd 2023.07.13 165
3870 error while loading shared libraries: libncurses.so.5 에러 문의 드립니다. 3 kikiki767 2023.07.10 1471
3869 다운로드페이지에 CUBRIDManager 11.x windows-x64.exe 는 없는데 .. 다운로드 할 수 있을까요? 2 최라이거 2023.07.05 290
3868 db_class에서 테이블 목록 조회시 2 cncn 2023.07.03 294
3867 조회쿼리 시간단축 1 leeee 2023.06.30 98
3866 CUBRID 8.4.4 -> 11.0.3 로 업그레이드 시 발생할 문제가 있을까요? 1 SDDC사업개발자 2023.06.29 89
3865 CUBRID to Tibero DBLink지원 가능한지 알고싶습니다. 1 공공기관에서사용중1 2023.06.28 138
3864 ELO타입이 무엇인가요? 1 sobubble 2023.06.27 116
3863 백업파일 받았는데 복구하는 방법을 모르겠습니다. 4 Ggyak 2023.06.20 186
3862 UTF8 한글이 깨짐 4 file yonggi 2023.06.19 271
3861 저장 프로스저에 있는 함수 상세보기 문의입니다. 1 대출인생30년 2023.06.12 82
3860 MERGE INTO 속도 개선 문의 1 leeee 2023.06.12 129
3859 NX_transcation 1 yoo 2023.06.12 79
» cubrid cursor.close() 에러 관련질문 3 힘내자화이팅 2023.06.08 186
3857 merge 쿼리 속도개선 2 leeee 2023.06.08 109
3856 브로커(CAS)수 질문드립니다! 8 요시니 2023.06.05 152
3855 데이터 이관 문의입니다. 1 kipo0821 2023.05.30 129
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 200 Next
/ 200

Contact Cubrid

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