Seite 1 von 1

MSSQL 2005 Verbindung herstellen?

Verfasst: Montag 14. Juli 2008, 12:47
von C4S3
Hi!

Ich weiß, die Frage ist wahrscheinlich trivial, aber: wie kann ich eine Verbindung mit einem MS-SQL 2005 Server herstellen?

Ich habe bereits gesucht und nur Hinweise auf das Modul "pymssql" gefunden. Leider finde ich mich da nicht zurecht - es hapert schon beim Herstellen der Verdindung (oder gar noch früher). Ich wäre sehr dankbar, wenn mir jemand einen Tip geben könnte. Danke!

Re: MSSQL 2005 Verbindung herstellen?

Verfasst: Montag 14. Juli 2008, 13:25
von gerold
C4S3 hat geschrieben:Ich habe bereits gesucht und nur Hinweise auf das Modul "pymssql" gefunden.
Hallo C4S3!

Das pymssql-Modul ist eigentlich das was du brauchst. Du kannst aber auch auf eine normale ODBC-Verbindung zurückgreifen.

- pyODBC: http://pyodbc.sourceforge.net/
- pymssql: http://pymssql.sourceforge.net/

Beispiel mit pyODBC und Access:
- http://www.python-forum.de/topic-12658.html

Beispiele mit pyODBC und SQL-Server 2000:
- http://www.python-forum.de/topic-11057.html
- http://paste.pocoo.org/show/79406/

mfg
Gerold
:-)

Verfasst: Montag 14. Juli 2008, 13:44
von C4S3
Hi Gerold!
Danke für die Antwort.
Auf ODBC möchte ich, wenn möglich verzichten, sonst muss ich mich wieder auf jedem Client hinsetzen und das per Hand machen.

Aber gut zu wissen, dass ich mit pymssql auf dem richtigen Weg bin, auch wenn ich ständig ein Timeout bekomme, obwohl es mit anderen Sprachen funktioniert.... :(

Ich werde einfach weiter Testen. Danke.

Verfasst: Montag 14. Juli 2008, 14:38
von gerold
C4S3 hat geschrieben:Auf ODBC möchte ich, wenn möglich verzichten, sonst muss ich mich wieder auf jedem Client hinsetzen und das per Hand machen.
Hallo C4S3!

Du musst keine ODBC-DSN einrichten. Die kannst du dir im Programm selbst zusammensetzen.

Schau dir dazu das hier an: http://paste.pocoo.org/show/79406/
Suche nach der Funktion ``get_connection``.

Und hier findest du die möglichen Connectionstrings:
http://www.python-forum.de/topic-14822.html

mfg
Gerold
:-)

Verfasst: Montag 14. Juli 2008, 15:57
von C4S3
Danke! Es war ein ziemliches Herumprobieren, aber schlussendlich habe ich "den" nötigen Connectionstring!
Wer also mal in die Verlegenheit kommt:

Code: Alles auswählen

cnxn = pyodbc.connect("DRIVER={SQL Server}; SERVER=192.168.0.250\Instanz; DATABASE=DBNAME; UID=username; PWD=passwort")
In dieser Reihenfolge mit dem "Driver" und der IP statt des Namens hat es funktioniert. Ich hänge nun zumindest mal am Server, bin aber von Abfragen noch weit, weit entfernt.

Gerold, danke für die Hilfe!

Verfasst: Montag 14. Juli 2008, 16:12
von gerold
C4S3 hat geschrieben:Ich hänge nun zumindest mal am Server, bin aber von Abfragen noch weit, weit entfernt.
Hallo C4S3!

An dem sollte es auch nicht scheitern. Ungetestetes Beispiel:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import pyodbc

SQL_ENCODING = "cp1252"

conn = pyodbc.connect(
    "DRIVER={SQL Server};"
    "SERVER=192.168.0.250\Instanz;"
    "DATABASE=DBNAME;"
    "UID=username;"
    "PWD=passwort"
)

cur = conn.cursor()
sql = """
SELECT 
    vorname, nachname 
FROM 
    adressen 
WHERE
    (ort = ?)
"""
ort = u"Überau".encode(SQL_ENCODING)
cur.execute(sql, (ort, ))

for (vorname, nachname) in cur:
    print repr(vorname.decode(SQL_ENCODING))
    print repr(nachname.decode(SQL_ENCODING))
    
cur.close()
conn.close()
mfg
Gerold
:-)

Verfasst: Dienstag 15. Juli 2008, 11:02
von C4S3
Danke. Im Großen und Ganzen bekomme ich das jetzt schon so hin, wie ich möchte.

Vielen Dank für die Hilfe.