이 글에서는 SQLServer2000과 Python을 연결하는 방법을 주로 소개하고, Python에서 데이터베이스 연결을 구현하는 과정에서 겪게 되는 일반적인 문제와 관련 주의사항을 예시 형태로 분석하였습니다. 도움이 필요한 친구는 이 글을 참고하시기 바랍니다
이 예에서는 Python이 SQLServer2000에 연결하는 방법을 설명합니다. 참고하실 수 있도록 모두와 공유해 주세요. 자세한 내용은 다음과 같습니다.
pymssql.sourceforge.net/ PYTHON이 MSSQL에 연결하기 좋은 주소를 소개합니다!
파이썬을 사용하는 좋은 방법은 인터넷에서 기성 모듈을 많이 찾아 직접 다운로드해 사용하는 것입니다. 급속한 발전의 이유 중 하나는 바로 이것이다. 이제 우리는 주로 pymssql 모듈의 작동 기능을 공부할 것입니다!
설치 후 도움말 문서를 직접 쿼리하여 이 모듈의 일부 기능 도움말 문서를 볼 수 있습니다.
1. 문자 깨짐 문제를 해결하는 방법:
s.decode('gbk', 'ignore')
예를 들어 gbk 내부 코드에서 UTF- 8에서는 다음 작업을 수행할 수 있습니다
s.decode('gbk').encode('utf-8')
그러나 실제 개발에서는 이 방법에서 종종 예외가 발생하는 것을 발견했습니다.
UnicodeDecodeError: 'gbk' 코덱은 바이트를 디코딩할 수 없습니다. 위치 30664- 30665: 잘못된 멀티바이트 시퀀스
이것은 잘못된 문자가 발견되었기 때문입니다. 특히 C/C++로 작성된 일부 프로그램에서는 전자 공백이 다양한 방식으로 구현되는 경우가 많습니다. /xa3/xa0 또는 /xa4/x57과 같이 이러한 문자는 전자 공백으로 보이지만 "합법적인" 전자 공백은 아닙니다(실제 전자 공백은 /xa1/xa1임). 트랜스코딩 프로세스 중 예외가 발생했습니다.
다행히도 Tiny는 완벽한 해결책을 찾았습니다(문서를 주의 깊게 읽지 않았다고 비난을 받았습니다. 땀...)
s.decode('gbk', 'ignore').encode('utf-8')
decode의 함수 프로토타입이 decode([encoding] , [ error='strict']), 두 번째 매개변수를 사용하여 오류 처리 전략을 제어할 수 있습니다. 이는 잘못된 문자가 발견되면 예외가 발생함을 의미합니다. 무시로 설정하면 잘못된 문자가 무시됩니다.
바꾸기로 설정하면 잘못된 문자가 ?로 대체됩니다. xmlcharrefreplace로 설정하면 XML 문자 참조가 사용됩니다.
이 방법이 정말 도움이 됩니다. 전각, 반각 불법 문자를 데이터베이스에 저장하는 문제는 이렇게 해결 가능합니다!
import MySQLdbwhere MSSQL:
import pymssql2단계: 연결 열기 where MYSQL:
conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)where MSSQL:
conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)[자체 함수 프로토타입을 통해 정의된 메서드입니다.]3단계: 연결이 완료된 후 커서를 만듭니다. 이 개체를 사용하여 데이터베이스에 요청 작업을 보냅니다. 코드:
curs = conn.cursor()는 JAVA의 명령문 개체와 동일합니다.
명령문을 통해 SQL 명령 제출 4단계: 데이터베이스 서버에 SQL 명령 전송을 시작합니다.
curs.execute(SQL)예를 들면 다음과 같습니다.
curs.execute("select * from test")SQL 명령은 임의의 SQL 문일 수 있으며 INSERT 작업 또는 DELETE 작업일 수도 있고 SELECT 작업 일 수도 있습니다. 실행이 완료된 후에는 commit()이 필요합니다. 예:
cursor.execute("insert into test(id) values(1)")SELECT 작업이 실행되면 다섯 번째 단계가 필요합니다. 다섯 번째 단계:
curs.execute("select * from test") rows = curs.fetchall()where fetchall() 단지 커서 개체의 메서드일 뿐입니다. 이제 관련 정보를 추출할 수 있습니다
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')
위 내용은 Python을 사용하여 SQLServer2000에 연결하는 방법을 가르치는 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!