MSSQL 2005 Verbindung herstellen?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Montag 14. Juli 2008, 12:47

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!
Gruß!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 14. Juli 2008, 13:25

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Montag 14. Juli 2008, 13:44

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.
Gruß!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 14. Juli 2008, 14:38

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Montag 14. Juli 2008, 15:57

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!
Gruß!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Montag 14. Juli 2008, 16:12

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
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

Dienstag 15. Juli 2008, 11:02

Danke. Im Großen und Ganzen bekomme ich das jetzt schon so hin, wie ich möchte.

Vielen Dank für die Hilfe.
Gruß!
Antworten