1

IronPython と clr モジュールを使用して、SMO 経由で SQL Server 情報を取得しています。SQL Alchemy を使用して SQL Server データベースにこのデータを取得/保存したいのですが、pyodbc モジュールの読み込みに問題があります。

セットアップは次のとおりです。

  • IronPython 2.6.1 (D:\Program Files\IronPython にインストール)
  • CPython 2.6.5 (D:\Python26 にインストール)
  • SQL Alchemy 0.6.1 (D:\Python26\Lib\site-packages\sqlalchemy にインストール)
  • pyodbc 2.1.7 (D:\Python26\Lib\site-packages にインストール)

CPython 標準およびサードパーティ ライブラリをインポートするために、IronPython の site.py に次のエントリがあります。

# Add CPython standard libs and DLLs
import sys
sys.path.append(r"D:\Python26\Lib")
sys.path.append(r"D:\Python26\DLLs")
sys.path.append(r"D:\Python26\lib-tk")
sys.path.append(r"D:\Python26")

# Add CPython third-party libs
sys.path.append(r"D:\Python26\Lib\site-packages")

# sqlite3
sys.path.append(r"D:\Python26\Lib\sqlite3")

# Add SQL Server SMO
sys.path.append(r"D:\Program Files\Microsoft SQL Server\100\SDK\Assemblies")
import clr
clr.AddReferenceToFile('Microsoft.SqlServer.Smo.dll')
clr.AddReferenceToFile('Microsoft.SqlServer.SqlEnum.dll')
clr.AddReferenceToFile('Microsoft.SqlServer.ConnectionInfo.dll')

SQL Alchemy は IronPython で OK をインポートします。SQL Server に接続しようとすると、次のエラー メッセージが表示されます。

IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.3607
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> e = sqlalchemy.MetaData("mssql://")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python26\Lib\site-packages\sqlalchemy\schema.py", line 1780, in __init__
  File "D:\Python26\Lib\site-packages\sqlalchemy\schema.py", line 1828, in _bind_to
  File "D:\Python26\Lib\site-packages\sqlalchemy\engine\__init__.py", line 241, in create_engine
  File "D:\Python26\Lib\site-packages\sqlalchemy\engine\strategies.py", line 60, in create
  File "D:\Python26\Lib\site-packages\sqlalchemy\connectors\pyodbc.py", line 29, in dbapi
ImportError: No module named pyodbc

このコードは CPython では問題なく動作しますが、IronPython から pyodbc モジュールにアクセスできないようです。

助言がありますか?これが問題に取り組む最良の方法ではない可能性があることを認識しているため、別の方法でこれに取り組むことにオープンです. SQL Alchemy と pyodbc の使用経験が欲しかっただけです。

4

4 に答える 4

2

pyodbc は cPython で使用するために設計されているため、IronPython と互換性がない可能性が非常に高いです。

確かに、IronPython にはある種の ODBC (実際には ADO.net のようです) との互換性が組み込まれていますが、DBAPI は SQLAlchemy を使用するための最も直接的な方法です。

MS 固有の非 DBAPI の例を次に示します : http://www.ironpython.info/index.php/Accessing_SQL_Server -and-adonet-part-2.html もう少し最近のもの: http://bitbucket.org/jdhardy/adonet-dbapi/

それは、MS が IronPython に多額の資金を注ぎ込んでも、準拠した DBAPI ドライバーにはゼロを注いでいることを示しています。

于 2010-06-09T15:39:06.237 に答える
0

adodbapi が適しているようですが、SQL Alchemy に同梱されている adodbapi.py のスニペットを方言フォルダーの下に示します。

"""
The adodbapi dialect is not implemented for 0.6 at this time.

"""
于 2010-06-14T19:12:38.703 に答える
0

pyodbc は現在 IronPython と互換性がないため、SQLAlchemy を IronPython で直接実行することはできません。

ただし、IronPython で pypyodbc を dbi-2.0 準拠ライブラリとして使用できますこれは pyodbc に似ており、Ironpython で sqlalchemy を実行できます。このハウツーでは、それを有効にするための 4 つの手順について説明します。

免責事項: 私は pypyodbc のメンテナーです。

于 2013-03-08T13:15:27.670 に答える
0

代わりに、 SQLAlchemy のadodbapiサポートを使用してみてください。adodbapi の最新バージョン (2.3.0) は IronPython をサポートしています。

adodbapi パッケージが sys.path にあることを確認してから、接続文字列で 'mssql://' の代わりに 'mssql+adodbapi://' を使用するだけで済みます。

于 2010-06-10T17:54:53.643 に答える