2016-08-26 6 views
1

私は、SQL Server 2014の日付データ型をpymssqlからネイティブのpythonデータとして取得しようとしています。 pymssql docに基づいて、私は0.95 + freetds libと7.3 freetds verを持つ必要があります。pymssql/freetds date from sqlserver

# 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 

そして、私はまだPythonの文字列の代わりの日付を取得します。これはTDSDUMPCONFIGのものです。それはfreetds 0.95.8がtds 7.3をサポートしていないからですか? (メジャー/マイナーバージョンは7/1に置き換えられているようです)。

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 = 

Iは設定で7.4にTDSバージョンを設定した場合、私はログにこのエラーを確認します

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 

ENV:リナックス/ 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はまだリリースされていません。 –