database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Tutorials 16728 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 16728
MySQLmodule-1.4 설치/사용법
작성자
정재익(advance)
작성일
2002-08-05 22:14
조회수
12,810

MySQLmodule-1.4 설치/사용법

 

이강성 2001.1.19

 

1년여전에 MySQLmodule의 설치 문서를 번역했는데, 많은 사용자들이 불편함을 격는 것 같아서, 간단한 설치법과 사용법을 다시 정리한다.

 

--------------------------------------------------------------------------------

 

컴파일과 설치

다운로드 : MySQLmodule-1.4.tar.gz 를 다운받고, 압축을 푼다.

 

다음 세가지 경우 중에 한가지로 컴파일한다. (3번을 추천한다)

 

MS 윈도우 시스템에 설치하려면, README.NT을 읽는다.

파이썬 자체에 이 모듈을 포함시키는 법.

MySQLmodule.c 를 Python 소스의 Modules 디렉토리에 복사한다.

그 디렉토리의 Setup 화일에 다음의 행을 추가한다. (mysql 경로가 다를 수 있다.)

 

MySQL MySQLmodule.c -L/usr/local/lib/mysql/ -lmysqlclient \r

-I/usr/local/include/mysql

 

MySQL 라이브러리와 인클루드 디렉토리는 시스템에 따라 다를 수 있음에 주의하라. 공용 모듈로 만들고 싶다면 Setup 화일의 *shared* 아래에 삽입하라.

Python을 컴파일한 적이 있으면 Python 디렉토리에서 make를 수행시킨다. 그렇지 않으면, compile/install 의 지시내용을 따라라.

동적으로 적재가능한 모듈을 만드는 법(권장 방법)

 

파이썬 1.5.2에서 컴파일 예: (여러분 시스템에 따라서 경로의 조정이 필요할지도 모른다.)

 

gcc -shared -I/usr/include/python1.5 -I/usr/local/include/mysql MySQLmodule.c -L/usr/local/lib/mysql -lmysqlclient -L/usr/lib/python1.5/config -lpython1.5 -o MySQLmodule.so

 

파이썬 2.0에서 컴파일 예:

 

gcc -shared -I/usr/local/include/python2.0 -I/usr/local/include/mysql MySQLmodule.c -L/usr/local/lib/mysql -lmysqlclient -L/usr/local/lib/python2.0/config -lpython2.0 -o MySQLmodule.so

 

만들어진 MySQLmodule.so를 PYTHONPATH 중의 한 디렉토리로 이동한다. 예를 들면 다음과 같다:

 

cp MySQLmodule.so /usr/lib/python1.5/lib-dynload/ # 1.5용

cp MySQLmodule.so /usr/local/lib/python2.0/lib-dynload/ # 2.0용

 

* 만일 컴파일 도중 다음과 같은 에러가 발생하면 http://www.python.or.kr:8080/python/DB/mysql/MySQLmodule.c 파일로 다시 시도해 본다.

 

MySQLmodule.c: In function `pythonify_row\:

MySQLmodule.c:238: warning: assignment from incompatible pointer type

MySQLmodule.c: In function `pythonify_res_fields\:

MySQLmodule.c:384: invalid lvalue in unary `&\

MySQLmodule.c: In function `STH_fetchdict\:

MySQLmodule.c:1125: invalid lvalue in unary `&\

MySQLmodule.c:1147: invalid lvalue in unary `&\

 

--------------------------------------------------------------------------------

 

데이터베이스 연결하기

 

>>> import MySQL

>>> DBH = MySQL.connect(\localhost\, \userid\, \password\)

>>> DBH.selectdb(\test\)

 

질의(SQL) 하기

 

>>> STH = DBH.query(\select * from pet\)

 

질의(SQL) 결과에 대한 정보 얻기

 

>>> STH.numrows() # 레코드 수

9

>>> STH.numfields() # 필드 수

6

>>> STH.fields() # 필드 정보 얻기

[[\name\, \pet\, \varchar\, 20, \], [\owner\, \pet\, \varchar\, 20, \], [\spec

ies\, \pet\, \varchar\, 20, \], [\sex\, \pet\, \string\, 1, \], [\birth\, \pet

\, \date\, 10, \], [\death\, \pet\, \date\, 10, \]]

 

질의(SQL) 결과 얻기 (리스트 형식)

 

>>> recs = STH.fetchrows() # 검색된 전체 레코드 읽음. 리스트의 리스트 형

>>> for rec in recs: # 출력

... print rec

...

[\Fluffy\, \Harold\, \cat\, \f\, \1993-02-04\, None]

[\Claws\, \Gwen\, \cat\, \m\, \1994-03-17\, None]

[\Buffy\, \Harold\, \dog\, \f\, \1989-05-13\, None]

[\Fang\, \Benny\, \dog\, \m\, \1990-08-27\, None]

[\Bowser\, \Diane\, \dog\, \m\, \1989-08-31\, \1995-07-29\]

[\Chirpy\, \Gwen\, \bird\, \f\, \1998-09-11\, None]

[\Whistler\, \Gwen\, \bird\, None, \1997-12-09\, None]

[\Slim\, \Benny\, \snake\, \m\, \1996-04-29\, None]

[\Puffball\, \Diane\, \hamster\, \f\, \1999-03-30\, None]

 

>>> recs = STH.fetchrows(2) # 원하는 만큼의 결과를 순차적으로 얻을 수도 있다.

 

질의(SQL) 결과 얻기 (사전 형식)

 

사전 형식으로 레코드를 받아서 처리하면 위치 정보를 모르고 이름으로 필드에 접근 가능하므로 매우 편리하다.

 

>>> STH = DBH.query(\select * from pet\)

>>> rec = STH.fetchdict(1) # 사전 형식으로 레코드를 받음.

>>> rec

[{\pet.death\: None, \pet.owner\: \Harold\, \pet.sex\: \f\, \pet.birth\: \1993-0

2-04\, \pet.name\: \Fluffy\, \pet.species\: \cat\}]

 

>>> recs = STH.fetchdict() # 남은 전체 레코드 읽음

>>> for rec in recs:

... print rec[\pet.name\], rec[\pet.birth\]

...

Fluffy 1993-02-04

Claws 1994-03-17

Buffy 1989-05-13

Fang 1990-08-27

Bowser 1989-08-31

Chirpy 1998-09-11

Whistler 1997-12-09

Slim 1996-04-29

Puffball 1999-03-30

>>>

 

테이블 생성하고 레코드 삽입하고, DB만들고..

 

이 기능은 특별하지 않다. 다음과 같이 데이터 객체에 명령만 문자열로 넘겨주면 된다.

 

DBH[\create table pytest (x int, y int, s char(20))\]

DBH[\insert into pytest values (1,2,\abc\)\]

DBH[\drop table pytest\]

 

이강성 2001년 1월 19일

[Top]
No.
제목
작성자
작성일
조회
17235Using MySQL with ASP and MyODBC [1]
정재익
2002-10-02
14399
17063MySQL 의 간단한 설명서 [1]
정재익
2002-09-09
33001
17062too many connections 에러 해결책
정재익
2002-09-09
13902
16728MySQLmodule-1.4 설치/사용법
정재익
2002-08-05
12810
16726MySQLmodule-1.4 문서
정재익
2002-08-05
10045
16666Mysql 한방에 백업하기 [8]
정재익
2002-07-30
14627
16665mysql 에러 복구.
정재익
2002-07-30
10339
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.057초, 이곳 서비스는
	PostgreSQL v14.6으로 자료를 관리합니다