RSS Feed

August, 2009

  1. August 3, 2009 by Oğuz Yarımtepe

    NEU öğrenci veri tabanı zamanında MsSQL sunucu üzerinde inşa edildiğinden benim de yazacağım uygulamada bir şekilde ona bağlanmam gerekti. Şu aralar MsSQL den MySQL’e göç devam etse de şimdilik pek haz etmesem de sevgili Ms sunucu ile konuşmam gerekecek.

    Pardus altında Ms sunucuya veri tabanı bağlantısı yapabilmek için FreeTDS  ve unixODBC ikilisini kullandım. unixODBC, Unix için ODBC arayüzü olarak geçen ve Pardus 2008.2 ile varsayılan kurulu gelen bir paket. Ayar dosyalarına bakmak için

    $ odbcinst -j
    unixODBC 2.2.12
    DRIVERS…………: /etc/unixODBC/odbcinst.ini
    SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini
    USER DATA SOURCES..: /home/oguz/.odbc.ini

    Varsayılan olarak odbcinst.ini ve odbc.ini dosyaları boş geliyor Pardus’ta. Birazdan odbc.ini’yi elliyor olacağız. Önce FreeTDS kurulumu yapmak gerekiyor. Pardus depolarında henüz olmayan bir paket kendileri. Bu durumda her fani gibi kaynağını çekip derleyip kurmamız gerekiyor. http://www.freetds.org/ adresine girdiğimizde kararlı sürümünü indirip tar.gz dosyasını açtıktan sonra aşağıdaki adımları takip etmek yeterli oluyor kurulum için.

    $ ./configure –enable-msdblib

    $ make

    $ sudo make install

    Kurulum varsayılan olarak /usr/local/ altına dosyalarını yerleştiriyor. /usr/local/etc/freetds.conf dosyasındaki ilgili alanı şu şekilde değiştiriyoruz:

    [egServer70]
    ·   host = sunucu ip numarası
    ·   port = 1433
    ·   tds version = 8.0

    Bu dosya içerisindeki ; ile başlayan ve işimize yarayacağını düşündüğümüz satırları da açabiliriz. Ben tds version kısmını [gloabal] altında 5.0 olarak değiştirip başındaki noktalı virgülü kaldırmışım. Ayrıca log satırını da açmışım.

    sonra da odbc.ini dosyasını elliyoruz:

    [dsn]
    Description = MSSQLSERVER
    Driver = /usr/local/lib/libtdsodbc.so
    Servername = egServer70
    Database = baglanilacak veri tabanı adı

    Şimdi de pyodbc kullanarak bu işleri kullanabileceğimiz hale getirelim.

    In [1]: import pyodbc

    In [2]: pyodbc.connect(‘DSN=dsn;UID=oguz;PWD=.pass:parolaniz. .’)
    Out[2]: <pyodbc.Connection object at 0xb770f200

    Burada en kritik nokta sevgili Ms sunucunun parolayi .pass:bilmemne. . formatinda alıyor olması. Bunu onca uğraştan sonra hala bir giriş sorunu yaşarken, bir de windows bilen birileriyle bakalım şu olaya deyince öğrendim. Cahillik zor şey vesselam 🙂