Python 에서 SQLServer 2000 을 연결 하 는 방법 에 대한 상세 한 설명
4615 단어 PythonSQLServer2000
http://pymssql.sourceforge.net/ PYTHON 이 MSSQL 에 연결 할 좋 은 주 소 를 소개 합 니 다!
파 이 썬 의 좋 은 방법 은 인터넷 에서 기 존의 모듈 을 많이 찾 아서 직접 다운로드 해서 가 져 오 면 된다 는 것 이다.구체 적 으로 빠 른 개발 의 한 원인 은 바로 이것 이다.지금 은 주로 pymssql 이 모듈 의 조작 기능 을 연구 하 러 왔 습 니 다!
설치 후 도움말 문 서 를 직접 조회 하여 이 모듈 의 일부 기능 도움말 문 서 를 볼 수 있 습 니 다.
1.난 장 판 문 제 를 해결 하 는 방법:
s.decode('gbk', 'ignore')
예 를 들 어 특정한 String 대상 s 를 gbk 내부 코드 에서 UTF-8 로 바 꾸 려 면 다음 과 같이 조작 할 수 있 습 니 다.
s.decode('gbk').encode('utf-8')
그러나 실제 개발 에서 나 는 이런 방법 이 자주 이상 하 다 는 것 을 발견 했다.UnicodeDecodeError: 'gbk' codec can't decode bytes in position 30664-30665: illegal multibyte sequence
이것 은 불법 문 자 를 만 났 기 때 문 입 니 다.특히 C/C++로 작 성 된 프로그램 에서 전각 빈 칸 은 여러 가지 실현 방식 이 있 습 니 다.예 를 들 어/xa3/xa0 또는/xa4/x57 등 문 자 는 모두 전각 빈 칸 으로 보이 지만'합 법 적'인 전각 빈 칸(진정한 전각 빈 칸 은/xa1/xa1)이 아니 기 때문에 코드 를 바 꾸 는 과정 에서 이상 이 발생 했 습 니 다.
다행히 티 니 는 완벽 한 해결책 을 찾 았 다.
s.decode('gbk', 'ignore').encode('utf-8')
decode 의 함수 원형 은 decode([encoding],[errors='strict'])이기 때문에 두 번 째 매개 변수 로 오류 처 리 를 제어 할 수 있 는 전략 입 니 다.기본 매개 변 수 는 strict 입 니 다.불법 문 자 를 만 났 을 때 이상 을 던 지 는 것 을 의미 합 니 다.ignore 로 설정 하면 불법 문 자 를 무시 합 니 다.
replace 로 설정 하면 사용 합 니까?불법 문자 대신 하기;
xmlcharrefreplace 로 설정 하면 XML 문 자 를 참조 합 니 다.
이 방법 은 확실히 상당히 큰 도움 이 된다.데이터베이스 에 전각 과 반 각 을 저장 한 불법 문자 에 대해 서 는 이렇게 해결 할 수 있 습 니 다!
문자 인 코딩 문 제 는 영원히 골 치 아 픈 문제 입 니 다.하하!
2.http://www.python.org/dev/peps/pep-0249/
위 에 Python-DBAPI 의 상용 조작 기능 을 제공 합 니 다.
관련 API 작업 방법 요약:
3.Python 이 데이터 베 이 스 를 연결 하 는 일반적인 프로그램 과정 을 정리 하면 이렇게 쓰 인 다.
STEP 1:관련 모듈 가 져 오기
그 중 MYSQL:
import MySQLdb
그 중 MSSQL:
import pymssql
두 번 째 단계:연결 열기그 중 MYSQL:
conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)
그 중 MSSQL:
conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)
[그 자체 의 함수 원형 을 통 해 이 방법 을 정의 하 는 것]세 번 째 단계:연결 이 끝나 면 cursor 를 만 들 기 시작 합 니 다.이 대상 을 통 해 데이터베이스 에 요청 동작 을 보 냅 니 다.
코드:
curs = conn.cursor()
JAVA 의 스테이 트 먼 트 대상 과 같은 것 이다.문 구 를 통 해 SQL 명령 을 제출 합 니 다.STEP 4:데이터베이스 서버 에 SQL 명령 을 보 내기 시 작 했 습 니 다.이렇게 할 수 있 습 니 다.
curs.execute(SQL)
예 를 들 면:
curs.execute("select * from test")
그 중의 SQL 명령 은 임의의 SQL 문 구 를 실행 하거나 DELETE 작업 을 수행 할 수도 있 고 SELECT 작업 을 할 수도 있 습 니 다.실행 이 끝 난 후에 commt()를 한 번 제출 해 야 한 다 는 것 을 알 아야 합 니 다.
예 를 들 면:
cursor.execute("insert into test(id) values(1)")
SELECT 작업 을 수행 했다 면 다섯 번 째 작업 을 해 야 합 니 다.다섯 번 째 단계:
curs.execute("select * from test")
rows = curs.fetchall()
그 중의 fetchall()은 우리 의 cursor 대상 의 한 방법 일 뿐이다.이제 관련 정 보 를 추출 할 수 있 습 니 다.
for i in range(len(rows)):
print "Row",i,"name",rows[i][0],"value",rows[i][1]
내 가 쓴 코드 를 봐 라.
def test(self):
conn = self.connect()
sql="select * from bbs where id<20"
curs = conn.cursor() #
curs.execute(sql) # SQL
rows=curs.fetchall() #
for i in range(len(rows)): #
print "Row",i,"name",rows[i][3],"value",rows[i][4]
conn.close()
이런 방법 을 통 해 얻 은 한 줄 의 기록 은 사실 원 그룹의 데이터 구조 이다.그 중 하 나 를 찾 으 려 면 2 차원 배열 과 유사 한 방법 으로 조회 할 수 있다.
rows[1][0]:첫 번 째 기록 의 첫 번 째 위치의 값 을 나타 낸다.
그리고 데이터베이스 에서 추출 한 후에 인 코딩 처리 와 디 코딩 처 리 를 하 는 것 을 다시 한 번 보 겠 습 니 다.
for i in range(len(rows)):
print rows[i][4].decode('gb2312', 'ignore').encode('gb2312')
나중에 데이터 베 이 스 를 조작 하면 바로 이렇게 코드 를 쓸 수 있 습 니 다!http://pymssql.sourceforge.net/userguide.html문 서 를 설명 하 는 데 상세 한 도움 이 되 는
파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.