python 은 pymssql 을 이용 하여 SQL 을 연결 합 니 다.

4814 단어 pythonMSSQL
우선 pymssql 모듈 을 설치 해 야 합 니 다 (http://linuxshow.blog.51cto.com/1572053/1407255)
freetds 설정
#cat /usr/local/freetds/etc/freetds.conf
#   $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $## This file is installed by FreeTDS if no file by the same # name is found in the installation directory.  ## For information about the layout of this file and its settings, # see the freetds.conf manpage "man freetds.conf".  # Global settings are overridden by those in a database# server specific section[global]        # TDS protocol version;tds version = 4.2# Whether to write a TDSDUMP file for diagnostic purposes# (setting this to /tmp is insecure on a multi-user system);dump file = /tmp/freetds.log;debug flags = 0xffff# Command and connection timeouts;timeout = 10;connect timeout = 10# If you get out-of-memory errors, it may mean that your client# is trying to allocate a huge buffer for a TEXT field.  # Try setting 'text size' to a more reasonable limit text size = 64512# A typical Sybase server#newadd[test_db]       host = 127.0.0.1       port = 1433       tds version = 8.0       client charset = GBK
SQL 서버 연결 코드
import sys
import pymssql
class Mssql:
    def __init__(self, config):
        self.cf = config
    def __Connect(self):
        try:
            self.conn = pymssql.connect(host=self.cf['host'],user=self.cf['user'],password=self.cf['pwd'],database=self.cf['db'])
            cur = self.conn.cursor()
        except Exception, err:
            print "Error decoding config file: %s" % str(err)
            sys.exit(1)
        return cur
                                                                                                                                                                                                                                                                                                                                                                                               
    def select(self, sql):
        try:
            cur = self.__Connect()
            cur.execute(sql)
            rows = cur.fetchall()
            cur.close()
            self.conn.close()
            return rows
        except Exception, err:
            print "Error decoding config file: %s" % str(err)
            sys.exit(1)
    def insert(self, sql):
        try:
            cur = self.__Connect()
            cur.execute(sql)
            cur.close()
            self.conn.commit()
            self.conn.close()
        except Exception, err:
            print "Error decoding config file: %s" % str(err)
            sys.exit(1)
def main():
    config = {'host':'test_db','user':'test','pwd':'123456','db':'Testdb'}
    mssql = Mssql(config)
                                                                                                                                                                                                                                                                                                                                                                                               
    #select sql
    sql = "select * from test_table"
    rows = mssql.select(sql)
    #insert sql
    sql = "insert into test_table values('1','2','3')"
    mssql.insert(sql)
if __name__ == "__main__":
    main()

주: host 안의 testdb 는 freetds 설정 을 호출 하여 ip 을 직접 쓸 수 있 습 니 다.
다음은 pymssql 의 매개 변수 사용 설명 입 니 다. 다음 과 같 습 니 다.
1. pymssqlCnx 클래스 (Mssql 데이터베이스 연결 에 사용)
pymssql. connect () 는 연결 클래스 를 초기 화 합 니 다. 다음 매개 변 수 를 허용 합 니 다.
dsn: 연결 문자열, 이전 버 전의 pymssql 호 환 user: 사용자 이름 password: 비밀번호 trusted: 불 값, windows 인증 으로 host 에 로그 인 할 지 여부 지정: 호스트 이름 database: 데이터베이스 timeout: 조회 시간 초과 logintimeout: 로그 인 시간 초과 charset: 데이터베이스 문자 집합 asdict: 불 값, 반환 값 이 사전 인지 원 그룹 max 인지 지정 합 니 다.conn: 최대 연결 수
2. Method
autocommt (status) 불 값 은 자동 으로 업 무 를 제출 할 지 여 부 를 표시 합 니 다. 기본 상 태 는 닫 혀 있 습 니 다. 열 려 면 commt () 방법 으로 업 무 를 제출 해 야 합 니 다.close () 연결 cursor () 를 닫 고 커서 대상 을 되 돌려 줍 니 다. 데이터 commt () 제출 업 무 를 조회 하고 되 돌려 줍 니 다.rollback () 스크롤 백 트 랜 잭 션 pymssqlCursor 류 는 데이터베이스 에서 데이터 rowcount 를 조회 하고 되 돌려 주 며 마지막 작업 에 영향 을 주 는 줄 수 를 되 돌려 줍 니 다.connection 커서 를 만 든 연결 대상 lastrowid 를 되 돌려 줍 니 다. 삽 입 된 마지막 줄 rownumber 를 되 돌려 줍 니 다. 현재 데이터 에 집 중 된 커서 를 되 돌려 줍 니 다. (색인 을 통 해)
3. 커서 방법
close () 커서 execute (operation) 를 닫 고 execute (operation, params) 를 실행 합 니 다. 매개 변 수 를 제공 하여 executemany (operation, params seq) 를 실행 할 수 있 습 니 다. Paramsseq 는 원 그룹 fetchone () 으로 결과 에서 다음 줄 fetchmany (size = None) 를 읽 습 니 다. 결과 에서 지정 한 수의 줄 fetchall () 을 읽 고 모든 줄 nextset () 커서 를 다음 데이터 세트 로 이동 합 니 다.

좋은 웹페이지 즐겨찾기