Используя Алхимию SQL и pyodbc с IronPython 2.6.1

Я использую IronPython и модуль сброса для получения информации о SQL Server через SMO. Я хотел бы получать/хранить эти данные в базе данных SQL Server с помощью Алхимии SQL, но испытываю некоторые затруднения при загрузке pyodbc модуля.

Вот установка:

  • IronPython 2.6.1 (установленный в D:\Program Files\IronPython)
  • CPython 2.6.5 (установленный в D:\Python26)
  • Алхимия SQL 0.6.1 (установленный в D:\Python26\Lib\site-packages\sqlalchemy)
  • pyodbc 2.1.7 (установленный в D:\Python26\Lib\site-packages)

У меня есть эти записи в IronPython site.py для импорта стандартных и сторонних библиотек CPython:

# 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 импортирует хорошо в IronPython, помещенный я получаю это сообщение об ошибке при попытке соединиться с 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, но похоже, что pyodbc модуль не доступен от IronPython.

Какие-либо предложения? Я понимаю, что это не может быть лучшим способом приблизиться к проблеме, таким образом, я открыт для занятия этим другой путь. Просто требуемый для получения некоторого опыта с использованием Алхимии SQL и pyodbc.

1
задан beargle 8 June 2010 в 15:01
поделиться

3 ответа

очень вероятно, что pyodbc не совместим с IronPython, так как он был разработан для использования с cPython.

IronPython, безусловно, имеет некоторую совместимость с ODBC (на самом деле, ADO.net, похоже, там, где это возможно), но DBAPI был бы самым прямым способом заставить SQLAlchemy работать с ним.

Итак, вот пример не-DBAPI, специфичный для MS: http://www.ironpython.info/index.php/Accessing_SQL_Server кто-то говорил о DBAPI в 2006 году: http://hex-dump.blogspot.com/2006/10/ironpython-and-adonet-part-2.html кое-что более свежее: http://bitbucket.org/jdhardy/adonet-dbapi/

Там говорится о том, что MS вливает сколько угодно денег в IronPython, но ноль в совместимый драйвер DBAPI.

2
ответ дан 2 September 2019 в 23:56
поделиться

Вы можете попробовать использовать поддержку SQLAlchemy adodbapi вместо; последняя версия adodbapi (2.3.0) поддерживает IronPython.

Вам нужно только убедиться, что пакет adodbapi находится в sys.path, а затем использовать mssql + adodbapi: // вместо mssql: // в строке подключения.

0
ответ дан 2 September 2019 в 23:56
поделиться

adodbapi кажется подходящим вариантом, но вот фрагмент из adodbapi.py, который поставляется с SQL Alchemy в папке диалектов

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

"""
0
ответ дан 2 September 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: