La portabilidad de código nos facilita tremendamente la vida a los desarrolladores. En python casi siempre podremos ejecutar cualquier código en distintas plataformas sin tocar nada, pero como en todo, hay excepciones.

Vamos a ver como adaptar nuestro código para según en que plataforma esté corriendo ejecute unas u otras instrucciones.

Para recuperar la info de la plataforma en la que estamos ejecutando nuestro código utilizamos platform:

import platform
print(platform.platform())

La función devolverá algo así:

Linux-5.0.0-16-generic-x86_64-with-Ubuntu-19.04-disco

O en el caso de un Windows 7..:

Windows-7-6.1.7601-SP1

Ok, conociendo esto, preparar el código para que ejecute un código u otro en función del SO es sencillo. Una vez implementado nos olvidamos de hacer ajustes para esta o aquella instalación.

Ejemplo implementación

Pongamos un ejemplo para que se entienda mejor.

La conexión a un SQLServer requiere de un ODBC específico en cada plataforma, y en la llamada a connect hay que especificar el nombre del mismo como parámetro.

Tienes más información de desarrollo con SQLServer y pyodbc aquí

En Linux utilizamos FreeTDS y en Windows ‘ODBC Driver 17 for SQL Server’

Las respectivas llamadas serian así:

Linux:

dbcnn = pyodbc.connect('DRIVER=FreeTDS;SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

Windows:

dbcnn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)	

El resultado de implementar ambas según el caso seria el siguiente:

SO=platform.platform()		
if(SO.find('Linux')>-1):
	# Linux
	dbcnn = pyodbc.connect('DRIVER=FreeTDS;SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
else:
	# windows:
	dbcnn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)	

Puede que te interese esta entrada

Dudas, comentarios y propuestas ya sabeis.

Espero sea de utilidad,

Saludos!!

Deja tu comentario