Instalar msodbcsql18 y auto-detectar driver de SQL Server en Linux/Windows
This commit is contained in:
@@ -1,7 +1,12 @@
|
|||||||
FROM python:3.10-slim
|
FROM python:3.10-slim
|
||||||
|
|
||||||
|
# Instalar dependencias del sistema y el Driver Oficial de Microsoft ODBC 18 para SQL Server en Linux
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
gcc g++ unixodbc-dev curl \
|
curl gnupg2 ca-certificates unixodbc unixodbc-dev gcc g++ \
|
||||||
|
&& curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \
|
||||||
|
&& curl -fsSL https://packages.microsoft.com/config/debian/12/prod.list > /etc/apt/sources.list.d/mssql-release.list \
|
||||||
|
&& apt-get update \
|
||||||
|
&& ACCEPT_EULA=Y apt-get install -y msodbcsql18 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|||||||
@@ -43,12 +43,26 @@ class DataManager:
|
|||||||
|
|
||||||
def sql_conn(self):
|
def sql_conn(self):
|
||||||
import pyodbc
|
import pyodbc
|
||||||
|
driver = os.getenv("SQL_DRIVER")
|
||||||
|
if not driver:
|
||||||
|
installed = pyodbc.drivers()
|
||||||
|
if "ODBC Driver 18 for SQL Server" in installed:
|
||||||
|
driver = "ODBC Driver 18 for SQL Server"
|
||||||
|
elif "ODBC Driver 17 for SQL Server" in installed:
|
||||||
|
driver = "ODBC Driver 17 for SQL Server"
|
||||||
|
elif "FreeTDS" in installed:
|
||||||
|
driver = "FreeTDS"
|
||||||
|
else:
|
||||||
|
driver = "SQL Server"
|
||||||
|
|
||||||
conn_str = (
|
conn_str = (
|
||||||
f"DRIVER={{SQL Server}};SERVER={self.sql_server};"
|
f"DRIVER={{{driver}}};SERVER={self.sql_server};"
|
||||||
f"DATABASE={self.sql_db};UID={self.sql_user};PWD={self.sql_pass}"
|
f"DATABASE={self.sql_db};UID={self.sql_user};PWD={self.sql_pass};"
|
||||||
|
"Encrypt=no;TrustServerCertificate=yes;"
|
||||||
)
|
)
|
||||||
return pyodbc.connect(conn_str)
|
return pyodbc.connect(conn_str)
|
||||||
|
|
||||||
|
|
||||||
# ── Config de campañas (GitHub, opcional) ───────────────────
|
# ── Config de campañas (GitHub, opcional) ───────────────────
|
||||||
def _cargar_campanias(self):
|
def _cargar_campanias(self):
|
||||||
if not self.github_campanias_url:
|
if not self.github_campanias_url:
|
||||||
|
|||||||
@@ -138,12 +138,26 @@ class DataManager:
|
|||||||
|
|
||||||
def sql_conn(self):
|
def sql_conn(self):
|
||||||
import pyodbc
|
import pyodbc
|
||||||
|
driver = os.getenv("SQL_DRIVER")
|
||||||
|
if not driver:
|
||||||
|
installed = pyodbc.drivers()
|
||||||
|
if "ODBC Driver 18 for SQL Server" in installed:
|
||||||
|
driver = "ODBC Driver 18 for SQL Server"
|
||||||
|
elif "ODBC Driver 17 for SQL Server" in installed:
|
||||||
|
driver = "ODBC Driver 17 for SQL Server"
|
||||||
|
elif "FreeTDS" in installed:
|
||||||
|
driver = "FreeTDS"
|
||||||
|
else:
|
||||||
|
driver = "SQL Server"
|
||||||
|
|
||||||
conn_str = (
|
conn_str = (
|
||||||
f"DRIVER={{SQL Server}};SERVER={self.sql_server};"
|
f"DRIVER={{{driver}}};SERVER={self.sql_server};"
|
||||||
f"DATABASE={self.sql_db};UID={self.sql_user};PWD={self.sql_pass}"
|
f"DATABASE={self.sql_db};UID={self.sql_user};PWD={self.sql_pass};"
|
||||||
|
"Encrypt=no;TrustServerCertificate=yes;"
|
||||||
)
|
)
|
||||||
return pyodbc.connect(conn_str)
|
return pyodbc.connect(conn_str)
|
||||||
|
|
||||||
|
|
||||||
# ── CHATWOOT: leads de pauta (mapa de campañas, dedup por mensaje) ──
|
# ── CHATWOOT: leads de pauta (mapa de campañas, dedup por mensaje) ──
|
||||||
def traer_leads_chatwoot(self):
|
def traer_leads_chatwoot(self):
|
||||||
sql = f"""
|
sql = f"""
|
||||||
|
|||||||
Reference in New Issue
Block a user