2016-08-26 2 views
1

pymssql을 통해 원시 파이썬 날짜로 SQL Server 2014에서 날짜 데이터 형식을 가져 오려고합니다. pymssql doc을 기반으로 0.95+ freetds lib와 7.3 freetds 버전이 필요합니다.symserver에서 pymssql/freetds 날짜

# tsql -C 
Compile-time settings (established with the "configure" script) 
         Version: freetds v0.95.8 
     freetds.conf directory: /etc 
MS db-lib source compatibility: no 
    Sybase binary compatibility: no 
        Thread safety: yes 
        iconv library: yes 
        TDS version: 4.2 
          iODBC: no 
         unixodbc: yes 
      SSPI "trusted" logins: no 
         Kerberos: no 
         OpenSSL: no 
         GnuTLS: no 

내가 설정 다음했다 :

#/etc/freetds.conf 
[sqlsvr1] 
    host = sqlsvr1 
    port = 1433 
    tds version = 7.3 

그리고 난 여전히 파이썬 문자열 대신 날짜를 얻을. 이것은 TDSDUMPCONFIG의 것입니다. 그것은 freetds 0.95.8이 tds 7.3을 지원하지 않기 때문입니까? (주/부 버전은 7/1로 대체 된 것 같습니다.) 제가 설정에서 7.4로 TDS 버전을 설정하면

config.c:620:IP addr is 172.16.12.26. 
config.c:580: port = '1433' 
config.c:580: tds version = '7.3' 
config.c:886:Setting tds version to 7.3 (0x703). 
config.c:568: Reached EOF 
config.c:300:Success: [sqlsvr1] defined in /etc/freetds.conf. 
config.c:765:Setting 'dump_file' to '/tmp/freetds.log' from $TDSDUMP. 
config.c:689:tds_config_login: client_charset is UTF-8. 
config.c:213:Final connection parameters: 
config.c:214:   server_name = sqlsvr1:1433 
config.c:215:  server_host_name = sqlsvr1 
config.c:218:    ip_addr = 172.16.12.26 
config.c:218:    ip_addr = 172.16.12.26 
config.c:218:    ip_addr = 172.16.12.26 
config.c:223:   instance_name = 
config.c:224:     port = 1433 
config.c:225:   major_version = 7 
config.c:226:   minor_version = 1 
config.c:227:    block_size = 0 
config.c:228:    language = us_english 
config.c:229:   server_charset = 
config.c:230:  connect_timeout = 0 
config.c:231:  client_host_name = rh1.int 
config.c:232:   client_charset = UTF-8 
config.c:233:    use_utf16 = 0 
config.c:234:    app_name = pymssql 
config.c:235:    user_name = USER 
config.c:238:    library = DB-Library 
config.c:239:    bulk_copy = 0 
config.c:240:  suppress_language = 0 
config.c:241:   encrypt level = 0 
config.c:242:   query_timeout = 0 
config.c:245:    database = 
config.c:246:    dump_file = /tmp/freetds.log 
config.c:247:   debug_flags = 0 
config.c:248:    text_size = 64512 
config.c:249:  emul_little_endian = 0 
config.c:250:  server_realm_name = 
config.c:251:    server_spn = 
config.c:252:     cafile = 
config.c:253:    crlfile = 

, 그럼 내가 로그에서이 오류를 발견 :

config.c:580: tds version = '7.4' 
config.c:881:error: no such version: 7.4 
config.c:568: Reached EOF 
config.c:213:Final connection parameters: 
... ... 
config.c:225:   major_version = 7 
config.c:226:   minor_version = 1 

봉투 : 리눅스/RH 6 + Python3.4.3 + pymssql (2.1. 1) 모두 x64

제안 사항?

+1

'.connect' 호출에서 명시 적으로 TDS 버전을 지정하여 차이가 있는지 확인해 보았습니까? (예 :'pymssql.connect (server = 'sqlsvr1', port = '1433', ..., tds_version = '7.3')' –

+0

FreeTDS 구성에서 unixODBC를 사용하고 있음을 보여줍니다. 연결 문자열에 tds_version을 지정하지 않은 경우 odbc.ini 파일에도 입력하십시오. DNS :'TDS_Version = 7.2' – FlipperPA

답변

2

대부분의 필수 조각이 있습니다.

하지만 실종 된 것은 pymssql 2.1.1을 사용하고 있다는 사실입니다.

DATE 및 TIME 데이터 유형에 대한 지원은 구현되었지만 아직 릴리스되지 않은 pymssql 2.2.0을 대상으로합니다. 필요하다면 먼저 'master'Git 지점에서 직접 빌드해야합니다.

+0

감사합니다! 2.2.0의 예상 출시일은 언제입니까? – fivelements

+0

고맙습니다. 내 문제도 해결되었습니다. 오늘부터는 Git (2017-07-20)에서 설치해야하며, 최신 pymssql 2.2는 아직 공개되지 않았습니다. –