Frage

Ich habe MSSQL 2005 bekam mit einer Datenbank auf meinem PC laufen würde Ich mag einige Python-Skripte auf laufen. Ich suche nach einem Weg, um etwas wirklich einfach Zugriff auf die Daten zu tun. Ich möchte einige select-Anweisungen, die Daten verarbeiten laufen und vielleicht haben Python eine Textdatei mit den Ergebnissen speichern.

Leider, obwohl ich ein wenig über Python und ein wenig über Datenbanken wissen, es ist sehr schwierig für mich, zu sagen zu, nur aus der Lektüre, wenn eine Bibliothek tut, was ich will. Im Idealfall würde ich so etwas für andere Versionen von MSSQL arbeitet, ist kostenlos und lizenzierte kommerzielle Nutzung zu ermöglichen, ist einfach zu bedienen und arbeitet möglicherweise mit Ironpython.

War es hilfreich?

Lösung

Ich verwende SQL Alchemy mit CPython (ich weiß nicht, ob es allerdings mit Ironpython arbeiten werde) . Es wird ziemlich vertraut sein, dass Sie, wenn Sie Hibernate / nHibernate verwendet haben. Wenn das ein wenig zu ausführlich für Sie, können Sie Elixir verwenden, die eine dünne Schicht auf der Oberseite ist von SQL Alchemy. Entweder auf einer von denen zu verwenden, müssen Sie Pyodbc , aber das ist ein ziemlich einfaches installieren.

Natürlich, wenn Sie gerade SQL schreiben möchten und nicht ein ORM verwenden, müssen Sie nur Pyodbc.

Andere Tipps

Alle anderen scheinen die CPython zu haben -> SQL Server-Seite abgedeckt. Wenn Sie Ironpython verwenden möchten, können Sie die Standard-ADO.NET-API verwenden, um die Datenbank zu sprechen:

import clr
clr.AddReference('System.Data')
from System.Data.SqlClient import SqlConnection, SqlParameter

conn_string = 'data source=<machine>; initial catalog=<database>; trusted_connection=True'
connection = SqlConnection(conn_string)
connection.Open()
command = connection.CreateCommand()
command.CommandText = 'select id, name from people where group_id = @group_id'
command.Parameters.Add(SqlParameter('group_id', 23))

reader = command.ExecuteReader()
while reader.Read():
    print reader['id'], reader['name']

connection.Close()

Wenn Sie bereits Ironpython erhalten, brauchen Sie nicht, etwas anderes zu installieren.

Viele Dokumente verfügbar rel="noreferrer"> und hier .

Pyodbc kommt mit Active Python, die von hier .

: Ein minimaler odbc Skript zu einem SQL Server 2005-Datenbank wie folgt aussieht verbinden
import odbc

CONNECTION_STRING="""
Driver={SQL Native Client};
Server=[Insert Server Name Here];
Database=[Insert DB Here];
Trusted_Connection=yes;
"""

db = odbc.odbc(CONNECTION_STRING)
c = db.cursor()
c.execute ('select foo from bar')
rs = c.fetchall()
for r in rs:
    print r[0]

Ich benutze auch erfolgreich pymssql mit CPython. (Mit und ohne SQLAlchemy).

http://adodbapi.sourceforge.net/ kann entweder mit CPython oder Ironpython verwendet werden. Ich habe sehr zufrieden mit ihm.

PyPyODBC ( http://code.google.com/p/pypyodbc ) arbeitet unter PyPy, Ironpython und CPython.

diesem Artikel zeigt eine Hallo Welt Beispiel mssql in Python zuzugreifen.

PyPyODBC hat almostly gleiche Nutzung wie Pyodbc, wie es als Wieder Implemenation des Pyodbc moudle gesehen kann. Weil es in reinem Python geschrieben ist, kann es auch auf Ironpython und PyPy ausgeführt werden.

Eigentlich, wenn der Schalter in der vorhandenen Skript pypyodbc, können Sie dies tun:

#import pyodbc               <-- Comment out the original pyodbc importing line

import pypyodbc as pyodbc    # Let pypyodbc "pretend" the pyodbc

pyodbc.connect(...)          # pypyodbc has 99% same APIs as pyodbc

...

Ich habe verwendet pymssql mit Standard-Python und hat es gefallen. Wahrscheinlich einfacher als die Alternativen erwähnt, wenn Sie nur suchen Grunddatenbankzugriff.

Beispiel Code .

Wenn Sie die schnelle und schmutzige Art und Weise mit CPython wollen (funktioniert auch für 3.X Python):

Installieren pywin32, nachdem Sie Python http://sourceforge.net/projects/pywin32/files / pywin32 /

Importieren Sie die folgende Bibliothek: Import odbc

habe ich die folgende Methode für die SQL Server ODBC-Treiber bekommen (es Namensgebung je nach Ihrer Windows-Version ist etwas anders, so dass dies wird es unabhängig erhalten):

def getSQLServerDriver():
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\ODBC\ODBCINST.INI")
    sqlServerRegExp =  re.compile('sql.*server', re.I | re.S)

    try:
        for i in range(0, 2048):
            folder = winreg.EnumKey(key, i)
            if sqlServerRegExp.match(folder):
                return folder.strip()
    except WindowsError:
        pass

Hinweis: Wenn Sie die obige Funktion nutzen zu können, müssen auch diese beiden Bibliotheken importieren: winreg und Re

Dann nutzen Sie die ODBC-API-1-Informationen wie hier definiert: http: // www .python.org / dev / pep / pep-0248 /

Ihre Verbindung Schnittstelle Zeichenfolge sollte wie folgt aussehen (vorausgesetzt, Sie sind für das Erhalten der ODBC-Treiber den Namen meines obigen Verfahren verwendet wird, und es ist eine vertrauenswürdige Verbindung):

dbString = "Driver={SQLDriver};Server=[SQL Server];Database=[Database Name];Trusted_Connection=yes;".replace('{SQLDriver}', '{' + getSQLServerDriver() + '}')

Diese Methode hat viele Seiten nach unten. Es ist ungeschickt, weil nur die Unterstützung ODBC-API-1, und es gibt ein paar kleinere Fehler entweder in der API oder die ODBC-Treiber, die ich über den Weg gelaufen habe, aber es macht den Job in allen Versionen von CPython in Windows getan.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top