{"id":15002427,"url":"https://github.com/glopez-distelsa/pyodbc_sqlalchemy_macos","last_synced_at":"2026-03-14T16:04:50.241Z","repository":{"id":250046188,"uuid":"833267541","full_name":"glopez-distelsa/pyodbc_sqlalchemy_macOS","owner":"glopez-distelsa","description":"Muestra la configuración necesaria para la conexión del ODBC de Microsoft SQL Server para su conexión desde pyodbc","archived":false,"fork":false,"pushed_at":"2024-07-25T21:51:43.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-18T12:15:55.043Z","etag":null,"topics":["mac-os","odbc","pyodbc","python","server","sql-server"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glopez-distelsa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-24T17:27:18.000Z","updated_at":"2024-07-25T21:51:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"a5b4511c-9f6e-435a-932d-2672ee3029e4","html_url":"https://github.com/glopez-distelsa/pyodbc_sqlalchemy_macOS","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"dd5a2b0e74d5c6a7f30939ecf518ae872b2d5dc2"},"previous_names":["glopez-distelsa/conn_pyodbc_macos"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glopez-distelsa%2Fpyodbc_sqlalchemy_macOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glopez-distelsa%2Fpyodbc_sqlalchemy_macOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glopez-distelsa%2Fpyodbc_sqlalchemy_macOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glopez-distelsa%2Fpyodbc_sqlalchemy_macOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glopez-distelsa","download_url":"https://codeload.github.com/glopez-distelsa/pyodbc_sqlalchemy_macOS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243146565,"owners_count":20243739,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mac-os","odbc","pyodbc","python","server","sql-server"],"created_at":"2024-09-24T18:50:13.159Z","updated_at":"2025-12-25T16:19:27.406Z","avatar_url":"https://github.com/glopez-distelsa.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# pyodbc_sqlalchemy_macOS 👨‍💻🚀☕️ \n\n## Fuente: 🗃️\n\n[GitHub - Connecting to SQL Server from Mac OSX](https://pages.github.com/)\n```\nhttps://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-Mac-OSX\n```\n[Install the Microsoft ODBC driver for SQL Server (macOS)](https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16#17)\n```\nhttps://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/install-microsoft-odbc-driver-sql-server-macos?view=sql-server-ver16#17\n```\n  \n\u003e [!IMPORTANT]\n\u003e Antes de comenzar, es fundamental tener un entorno de Python configurado adecuadamente. En el repositorio [conda_environments_install](https://github.com/glopez-distelsa/conda_environments_install), proporciono una guía detallada sobre cómo configurar entornos conda según el proyecto en el que estés trabajando, asegurando que todas las dependencias necesarias se encuentren dentro del mismo. Si aún no estás familiarizado con el uso de entornos, te recomiendo revisarlo.\n\n\n## Pasos a seguir para instalacion \n  \n- [ ] Instalar `Homebrew`\n    ```\n    /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)\"\n    ```\n    \n- [ ] Instalar Controladores ODBC\n* MICROSOFT\n  \n  1 - Agregar `repositorio de Microsoft`:\n  \n  ```\n  brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release\n  ```\n      \n  2 - Actualizar `Homebrew`:\n  \n  ```\n  brew update\n  ```\n      \n  3 - Instalar `msodbcsql18` y `mssql-tools18`:\n\n   ```\n  HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18 mssql-tools18\n  ```\n\n\u003e [!NOTE]\n\u003e `msodbcsql18:` Es el controlador ODBC específico para SQL Server, proporcionando conectividad ODBC a bases de datos SQL Server.\n\u003e `mssql-tools18:` Incluye herramientas como sqlcmd y bcp para interactuar con SQL Server desde la línea de comandos.\n\u003e Compatibilidad otros sitemas\n\u003e - MySQL `brew install mysql-connector-odbc`\n\u003e - PostgreSQL `brew install psqlodbc`\n\u003e - SQLite `brew install qliteodbc`\n        \n- [ ] Configuracion del entorno\n      \n    - Agrega la ruta de las bibliotecas de `Homebrew` a `DYLD_LIBRARY_PATH` en macOS\n      \n  ```\n  export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH\n  ```\n\n## Codigo prueba en python para conexión\n\n\u003e [!WARNING]\n\u003e Se requiere coordinar con los Administradores de bases de datos para que te asignen un usuario no autenticado que te permita establecer una conexión segura a la base de datos desde macOS utilizando Python\n\n- [ ] Creacion de archivo `odbc.ini`\n      \n    - Este archivo nos ayuda a crear las credenciales en el y no quemarlas dentro del codigo python, lo mas recomendable seria poder utilizar una boveda compartida o cloud para gestionarlas desde ahi, pero de momento podriamos hacerlo de la siguiente forma: `crear el archivo /usr/local/etc/odbc.ini`\n      \n  ```\n  [SQLSERVER113]\n  Description = My SQL Server\n  Driver = ODBC Driver 18 for SQL Server\n  Server = \u003cTU_SERVIDOR\u003e #.113\n  Database = \u003cTU_BASE_DE_DATOS\u003e\n  UID = \u003cTU_USUARIO\u003e\n  PWD = \u003cTU_CONTRASEÑA\u003e\n  TrustServerCertificate = yes\n  ```\n\n    - Codigo python con pyodbc\n\n```python\nimport pyodbc\nimport configparser\n\nconfig = configparser.ConfigParser()\nconfig.read('/usr/local/etc/odbc.ini')\ndb_config = config['SQLSERVER113']\n\nconn_str = (\n    f'DRIVER={db_config[\"Driver\"]};'\n    f'SERVER={db_config[\"Server\"]};'\n    f'DATABASE={db_config[\"Database\"]};'\n    f'UID={db_config[\"UID\"]};'\n    f'PWD={db_config[\"PWD\"]};'\n    f'TrustServerCertificate={db_config[\"TrustServerCertificate\"]};'\n)\n\ntry:\n    connection = pyodbc.connect(conn_str)\n    print(\"Connected to the database!\")\n    connection.close()\nexcept Exception as e:\n    print(f\"Failed to connect to the database: {e}\")\n```\n\n   - Codigo python con SQLAlchemy\n\n\n```python\nimport urllib\nimport configparser\nimport pandas as pd\nfrom sqlalchemy import create_engine, text\nfrom sqlalchemy.exc import SQLAlchemyError\n\n# ------------------------------------------------\n# configure crednentials\n# ------------------------------------------------\nconfig = configparser.ConfigParser()\nconfig.read('/usr/local/etc/odbc.ini')\ndb_config = config['SQLSERVER113']\n\n# Cadena de conexión ODBC\nodbc_str = (\n    f'DRIVER={db_config[\"Driver\"]};SERVER={db_config[\"Server\"]},{db_config[\"PORT\"]};DATABASE={db_config[\"Database\"]};UID={db_config[\"UID\"]};PWD={db_config[\"PWD\"]};TrustServerCertificate={db_config[\"TrustServerCertificate\"]};Encrypt=yes'\n    )\n\n# Convertir a formato compatible con SQLAlchemy\nconnection_string = f'mssql+pyodbc:///?odbc_connect={urllib.parse.quote_plus(odbc_str)}'\n\ndef get_driver_list():\n    \"\"\"_summary_\n\n    Returns:\n        _type_: _description_\n    \"\"\"\n    import pyodbc\n\n    print(\"List of ODBC Drivers:\")\n    print(\"------------------------\")\n    dlist = pyodbc.drivers()\n    for drvr in dlist:\n        print(drvr)\n    print(\"------------------------\")\n    return 0\n\ndef test_connection():\n    try:\n        query = text(\"SELECT @@version;\")\n        engine = create_engine(connection_string)\n        conn = engine.connect()\n        \n        df = pd.read_sql(query, conn)\n        print(df.iloc[0, 0])\n        print('Connection SUCCESSFUL')\n        conn.close()\n        return 0\n    except SQLAlchemyError as err:\n        print(\"Error\", err.__cause__)\n        return -1\n\ndef get_engine(echo=True):\n    \"\"\"_summary_\n\n    Returns:\n        _type_: _description_\n    \"\"\"\n    try:\n        engine = create_engine(connection_string, echo=echo)\n        return engine\n\n    except SQLAlchemyError as err:\n        print(\"error\", err.__cause__)\n        return -1\n\ndef get_conn():\n    \"\"\"_summary_\n\n    Returns:\n        _type_: _description_\n    \"\"\"\n    try:\n        engine = get_engine(echo=False)\n        conn = engine.connect()\n        return conn\n\n    except SQLAlchemyError as err:\n        print(\"error\", err.__cause__)\n        return -1\n\nif __name__ == \"__main__\":\n    test_connection()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglopez-distelsa%2Fpyodbc_sqlalchemy_macos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglopez-distelsa%2Fpyodbc_sqlalchemy_macos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglopez-distelsa%2Fpyodbc_sqlalchemy_macos/lists"}