Python 또는 Ironpython으로 MSSQL에 액세스하는 가장 간단한 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/289978

  •  08-07-2019
  •  | 
  •  

문제

Python 스크립트를 실행하고 싶은 데이터베이스가있는 개인 컴퓨터에서 MSSQL 2005를 실행했습니다. 데이터에 대해 정말 간단한 액세스를 수행 할 수있는 방법을 찾고 있습니다. 일부 명령문을 실행하고 데이터를 처리하며 Python이 결과와 함께 텍스트 파일을 저장하도록하고 싶습니다.

불행히도, 파이썬과 데이터베이스에 대해 조금 알고 있지만 도서관이 원하는 것을하는 경우 읽기 만하면서 말하기가 매우 어렵습니다. 이상적으로는 다른 버전의 MSSQL에 적합한 무언가를 원하고, 무료로 제공되며 상업용으로 사용할 수 있도록 라이센스가 부여되고, 사용이 간단하며, Ironpython과 함께 작동 할 수 있습니다.

도움이 되었습니까?

해결책

나는 사용한다 SQL 연금술 Cpython과 함께 (Ironpython과 함께 작동하는지 모르겠습니다). 최대 절전 모드/nhibernate를 사용했다면 친숙 할 것입니다. 그것이 당신에게 너무 장점이라면, 당신은 사용할 수 있습니다 엘릭서, 이것은 SQL 연금술 위에 얇은 층입니다. 그 중 하나를 사용하려면 필요합니다 pyodbc, 그러나 그것은 매우 간단한 설치입니다.

물론, 스트레이트 SQL을 쓰고 ORM을 사용하지 않으려면 pyodbc 만 있으면됩니다.

다른 팁

다른 모든 사람들은 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이 있다면 다른 것을 설치할 필요가 없습니다.

많은 문서를 사용할 수 있습니다 여기 그리고 여기.

PyoDBC는 활성화 된 파이썬과 함께 제공되며 여기. 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]

나는 또한 성공적으로 사용합니다 pymssql Cpython과 함께. (sqlalchemy가 있거나없는 경우).

http://adodbapi.sourceforge.net/ Cpython 또는 Ironpython과 함께 사용할 수 있습니다. 나는 그것에 매우 만족했다.

pypyodbc (http://code.google.com/p/pypyodbc) Pypy, Ironpython 및 Cpython에서 작동합니다.

이 기사 Python에서 MSSQL에 액세스하는 Hello World 샘플을 보여줍니다.

PYPYODBC는 PYODBC Moudle의 재 구현으로 볼 수 있기 때문에 PYODBC와 거의 동일한 사용량을 가지고 있습니다. 순수한 파이썬으로 작성되었으므로 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

...

나는 사용했다 pymssql 표준 파이썬으로 좋아했습니다. 당신이 언급 한 대안보다 더 쉽습니다 단지 기본 데이터베이스 액세스를 찾고 있습니다.

견본 암호.

Cpython과 함께 빠르고 더러운 방법을 원한다면 (3.x 파이썬에서도 작동 함) :

Python을 설치 한 후 Pywin32를 설치하십시오 http://sourceforge.net/projects/pywin32/files/pywin32/

다음 라이브러리 가져 오기 : 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

참고 : 위의 기능을 사용하는 경우이 두 라이브러리를 가져와야합니다.

그런 다음 여기에 정의 된대로 ODBC API 1 정보를 사용합니다. http://www.python.org/dev/peps/pep-0248/

Connection Interface String은 다음과 같이 보일 것입니다 (ODBC 드라이버 이름을 얻기 위해 위의 메소드를 사용하고 있다고 가정하면 신뢰할 수있는 연결이라고합니다).

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

이 방법에는 많은 아래쪽이 있습니다. ODBC API 1 만 지원하기 때문에 Clumsy이며, API 또는 ODBC 드라이버에는 몇 가지 사소한 버그가 있지만 Windows의 모든 버전의 Cpython에서 작업을 수행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top