23

私は自分のパーソナル コンピューターで mssql 2005 を実行しており、いくつかの Python スクリプトを実行したいデータベースを使用しています。データに非常に簡単なアクセスを行う方法を探しています。いくつかの選択ステートメントを実行し、データを処理し、Python で結果をテキスト ファイルに保存したいと考えています。

残念ながら、私は Python とデータベースについて多少の知識はありますが、読んだだけでは、ライブラリが私が望むことを行っているかどうかを判断するのは非常に困難です。理想的には、mssql の他のバージョンで動作し、無料で商用利用を許可するライセンスがあり、使いやすく、おそらく ironpython で動作するものが欲しいです。

4

8 に答える 8

26

他の誰もが cPython -> SQL Server 側をカバーしているようです。IronPython を使用する場合は、標準の ADO.NET API を使用してデータベースと通信できます。

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

すでに IronPython を入手している場合は、他に何もインストールする必要はありません。

herehere で利用できるドキュメントがたくさんあります。

于 2008-11-19T12:27:37.097 に答える
19

私はSQL Alchemyを cPython で使用しています (ただし、IronPython で動作するかどうかはわかりません)。Hibernate/nHibernate を使用したことがある場合は、かなりおなじみでしょう。それが少し冗長すぎる場合は、 SQL Alchemy の上にある薄いレイヤーであるElixirを使用できます。これらのいずれかを使用するには、pyodbcが必要ですが、インストールは非常に簡単です。

もちろん、ORM を使用せずに直接 SQL を記述したい場合は、pyodbc だけが必要です。

于 2008-11-14T13:02:21.383 に答える
12

pyodbc には Activestate Python が付属しており、こちらからダウンロードできます。SQL Server 2005 データベースに接続するための最小限の odbc スクリプトは次のようになります。

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]
于 2008-11-14T21:17:14.940 に答える
4

また、CPython でpymssqlを正常に使用しています。(SQLAlchemy の有無にかかわらず)。

于 2008-11-14T13:39:35.707 に答える
3

http://adodbapi.sourceforge.net/は、CPython または IronPython で使用できます。とても満足しています。

于 2009-04-23T14:54:22.337 に答える
2

PyPyODBChttp://code.google.com/p/pypyodbc)は、PyPy、Ironpython、およびCPythonで動作します。

この記事では、PythonでmssqlにアクセスするHelloWorldのサンプルを示します。

PyPyODBCは、pyodbcモジュールの再実装と見なすことができるため、pyodbcとほぼ同じ使用法です。純粋なPythonで記述されているため、IronPythonおよびPyPyでも実行できます。

実際、既存のスクリプトでpypyodbcに切り替えると、次のことができます。

#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

...
于 2012-09-27T03:49:08.723 に答える
1

標準の python でpymssqlを使用して気に入りました。基本的なデータベース アクセスを探しているだけの場合は、前述の代替方法よりもおそらく簡単です。

サンプルコード

于 2008-11-14T21:08:49.607 に答える
0

CPython (3.X python でも機能します) を使用した迅速で汚れた方法が必要な場合:

Python http://sourceforge.net/projects/pywin32/files/pywin32/をインストールした後、PYWIN32 をインストールします。

次のライブラリをインポートします: import odbc

SQL Server odbc ドライバーを取得するための次のメソッドを作成しました (Windows のバージョンによって名前が若干異なるため、これは関係なく取得されます)。

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

注: 上記の関数を使用する場合は、winreg と re の 2 つのライブラリもインポートする必要があります。

次に、ここで定義されている odbc API 1 情報を使用します: http://www.python.org/dev/peps/pep-0248/

接続インターフェイス文字列は次のようになります (ODBC ドライバー名を取得するために上記の方法を使用していて、それが信頼できる接続であると仮定します)。

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

この方法には多くの欠点があります。ODBC API 1 しかサポートしていないため扱いにくく、私が遭遇した API または ODBC ドライバーのいずれかに小さなバグがいくつかありますが、Windows の CPython のすべてのバージョンで機能します。

于 2011-09-14T20:48:50.093 に答える