>  기사  >  백엔드 개발  >  Python을 사용하여 SQLServer2000에 연결하는 방법을 가르치는 자세한 예

Python을 사용하여 SQLServer2000에 연결하는 방법을 가르치는 자세한 예

Y2J
Y2J원래의
2017-05-03 16:24:372100검색

이 글에서는 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 문자 참조가 사용됩니다.

이 방법이 정말 도움이 됩니다. 전각, 반각 불법 문자를 데이터베이스에 저장하는 문제는 이렇게 해결 가능합니다!

문자인코딩은 항상 골치아프네요 ㅎㅎ!

2.www.python.org/dev/peps/pep-0249/

위에서는 Python-DBAPI의 공통 동작 기능을 제공합니다.

관련 API 연산 방법을 요약하자면:

3. Python이 데이터베이스에 연결하는 일반적인 프로그램 과정을 요약하고 다음과 같이 작성한다.

1단계: 관련 모듈 가져오기

where MYSQL:

import MySQLdb

where MSSQL:

import pymssql

2단계: 연결 열기

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(&#39;gb2312&#39;, &#39;ignore&#39;).encode(&#39;gb2312&#39;)

위 내용은 Python을 사용하여 SQLServer2000에 연결하는 방법을 가르치는 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.