Quelle est la façon la plus simple d'accéder à mssql avec python ou ironpython?

j'ai mssql 2005 tournant sur mon ordinateur personnel avec une base de données sur laquelle j'aimerais lancer des scripts python. Je cherche un moyen de faire un accès très simple aux données. J'aimerais exécuter certaines instructions select, traiter les données et peut-être avoir python enregistrer un fichier texte avec les résultats.

malheureusement, même si je m'y connais un peu en python et un peu en bases de données, il est très difficile pour moi de dire, juste à partir de la lecture, si une bibliothèque fait ce que je veux. Idéalement, j'aimerais comme quelque chose qui fonctionne pour d'autres versions de mssql, est gratuit et sous licence pour permettre l'utilisation commerciale, est simple à utiliser, et fonctionne éventuellement avec ironpython.

23
demandé sur ConcernedOfTunbridgeWells 2008-11-14 15:50:11

8 réponses

j'utilise SQL Alchemy avec cPython (Je ne sais pas si ça marchera avec IronPython). Ce sera assez familier pour vous si vous avez utilisé Hibernate/nHibernate. Si c'est un peu trop verbeux pour vous, vous pouvez utiliser élixir, qui est une mince couche au-dessus de L'Alchimie SQL. Pour utiliser l'un de ces, vous aurez besoin pyodbc, mais c'est une installation assez simple.

bien sûr, si vous voulez écrire directement SQL et ne pas utiliser un ORM, vous avez juste besoin pyodbc.

18
répondu Jason Baker 2008-11-14 13:02:21

tout le monde semble avoir le côté cPython -> SQL Server couvert. Si vous voulez utiliser IronPython, vous pouvez utiliser le standard ADO.NET API to talk to the database:

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()

Si vous avez déjà IronPython, vous n'avez pas besoin d'installer quoi que ce soit d'autre.

Beaucoup de docs disponibles ici et ici.

26
répondu babbageclunk 2008-11-19 12:27:37

pyodbc est livré avec Activestate Python, qui peut être téléchargé à partir de ici. Un script odbc minimal pour se connecter à une base de données SQL Server 2005 ressemble à ceci:

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]
12
répondu ConcernedOfTunbridgeWells 2012-03-08 03:16:05

j'ai aussi réussi à utiliser pymssql avec Disponible. (Avec et sans SQLAlchemy).

4
répondu Ali Afshar 2008-11-14 13:39:35

http://adodbapi.sourceforge.net/ peut être utilisé avec CPython ou IronPython. J'ai été très heureux avec elle.

3
répondu dwelden 2009-04-23 14:54:22