para - crear conexion mysql python
¿Cuál es la forma más sencilla de acceder a mssql con python o ironpython? (8)
Tengo mssql 2005 ejecutándose en mi computadora personal con una base de datos en la que me gustaría ejecutar algunos scripts de Python. Estoy buscando una manera de hacer un acceso muy simple a los datos. Me gustaría ejecutar algunas declaraciones seleccionadas, procesar los datos y quizás Python pueda guardar un archivo de texto con los resultados.
Desafortunadamente, aunque sé un poco sobre python y un poco sobre bases de datos, es muy difícil para mí contar, solo leyendo, si una biblioteca hace lo que quiero. Idealmente, me gustaría que algo que funciona para otras versiones de mssql, es gratuito y con licencia para permitir el uso comercial, es fácil de usar y posiblemente funciona con ironpython.
También uso con éxito pymssql con CPython. (Con y sin SQLAlchemy).
Yo uso SQL Alchemy con cPython (no sé si funcionará con IronPython). Te resultará familiar si has utilizado Hibernate / nHibernate. Si eso es demasiado detallado para usted, puede usar Elixir , que es una capa delgada sobre SQL Alchemy. Para usar cualquiera de esos, necesitará pyodbc , pero esa es una instalación bastante simple.
Por supuesto, si quieres escribir SQL directamente y no usar un ORM, solo necesitas pyodbc.
Todos los demás parecen tener el lado cPython -> SQL Server cubierto. Si desea utilizar IronPython, puede usar la API ADO.NET estándar para hablar con la base de datos:
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 ya tiene IronPython, no necesita instalar nada más.
http://adodbapi.sourceforge.net/ se puede usar con CPython o IronPython. He estado muy contento con eso.
Si quieres la manera rápida y sucia con CPython (también funciona para 3.X python):
Instale PYWIN32 después de instalar Python http://sourceforge.net/projects/pywin32/files/pywin32/
Importe la siguiente biblioteca: import odbc
Creé el siguiente método para obtener el controlador odbc de SQL Server (es un poco diferente en la nomenclatura dependiendo de su versión de Windows, así que esto lo obtendrá independientemente):
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
Nota: si usa la función anterior, también deberá importar estas dos bibliotecas: winreg y re
Luego usa la información odbc API 1 como se define aquí: http://www.python.org/dev/peps/pep-0248/
Su cadena de interfaz de conexión debe tener un aspecto similar (suponiendo que está utilizando mi método anterior para obtener el nombre del controlador ODBC, y es una conexión de confianza):
dbString = "Driver={SQLDriver};Server=[SQL Server];Database=[Database Name];Trusted_Connection=yes;".replace(''{SQLDriver}'', ''{'' + getSQLServerDriver() + ''}'')
Este método tiene muchas desventajas. Es torpe porque solo soporta ODBC API 1, y hay un par de errores menores en la API o en el controlador ODBC con los que me he topado, pero hace el trabajo en todas las versiones de CPython en Windows.
Pyodbc viene con Activestate Python, que se puede descargar desde aquí . Una secuencia de comandos odbc mínima para conectarse a una base de datos de SQL Server 2005 se ve así:
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]
PyPyODBC ( http://code.google.com/p/pypyodbc ) funciona bajo PyPy, Ironpython y CPython.
Este artículo muestra una muestra de Hello World de acceso a mssql en Python.
PyPyODBC tiene casi el mismo uso que pyodbc, ya que se lo puede ver como una reintroducción de la máquina de pyodbc. Debido a que está escrito en Python puro, también se puede ejecutar en IronPython y PyPy.
En realidad, cuando cambie a pypyodbc en su script existente, puede hacer esto:
#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
...