Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Tuesday, December 17, 2019

Python3 connect to Microsof SQL Server

1. sudo apt-get install python3-pip
2. pip3 install pyodbc
3. sudo apt-get install unixodbc-dev
4. follow the Microsoft's documentations (ref: https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15 )
4.a
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 4.b curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
4.c sudo apt-get update
4.d sudo apt-get install msodbcsql17


Test connection with this code:
import pyodbcconn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server};" "Server=SERVER_IP;" "Database=DB_NAME;" "uid=DB_USERNAME;pwd=DB_PASSWORD;")conn.close()


Some error maybe occured:
> ModuleNotFoundError: No module named 'pyodbc' --> solution: pip3 install pyodbc

> pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)") --> solution: sudo apt-get install msodbcsql17

* My machine ubuntu 18.04


Monday, April 1, 2019

Python example recursive

The fibo function is using recursive. The fibo2 function using looping. Both of them will generate a Fibonacci sequence. Using recursive make our code shorter, but how about the performance?
import time

def fibo(n):
 if (n == 1 or n == 2):
  return(1)
 else:
  return(fibo(n-1)+fibo(n-2))

def fibo2(n):
 prev = 1
 curr = 1
 if (n == 1 or n == 2):
  return(1)
 elif (n < 1):
  return(-1)
 else:
  hasil = curr + prev
  for i in range(2, n):
   hasil = curr + prev
   prev = curr
   curr = hasil
  return(hasil)


iterasi = 40

start = time.time()
for i in range(iterasi):
 fibo(i+1)
end = time.time()
print("recursive " + str(end - start))

start = time.time()
for i in range(iterasi):
        fibo2(i+1)
end = time.time()
print("for " + str(end - start))


Output on my machine: