Skip to main content

SQLSERVER PYODBC Module

Academic Papers Regarding this Module

Installation for linux guys

  1. Install a driver for your linux machine!
  2. I recommend FreeTDS

Installing FreeTDS from bash script

You may look at my script @ https://github.com/adgsenpai/InstallFreeTDS

Installing FreeTDS Manually

  1. Install pre-requisite packages
sudo apt-get install unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc
  1. Point odbcinst.ini to the driver in /etc/odbcinst.ini
[FreeTDS]
Description = v0.91 with protocol v7.2
Driver = MYDRIVERPATH

where MYDRIVERPATH is the path of the libtdsodbc.so file

Hint! Look in the /usr/lib/mylinuxdistro/odbc folder! Will implement script in the future to install/automate this for linux solutions.

pip install sqlserver

Installation for windows guys

pip install sqlserver

Example of ConnectionString

DRIVERS = db.ReturnDrivers()
# output of drivers
['SQL Server', 'ODBC Driver 17 for SQL Server', 'SQL Server Native Client 11.0', 'SQL Server Native Client RDA 11.0', 'Microsoft Access Driver (*.mdb, *.accdb)', 'Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)', 'Microsoft Access Text Driver (*.txt, *.csv)']

# We can use a SQL ODBC Driver or FreeTDS
DRIVER={ODBC Driver 17 for SQL Server};SERVER=SERVERNAME,PORT;DATABASE=DB;UID=USERNAME;PWD=PASSWORD

Usage

Initialization

import sqlserver
db = sqlserver.adgsqlserver('yourconnectionstring')

Commands

Execute Query

parms: ExecuteQuery(query:str)

This enables you to execute any query without any stdout but returns a bool True or False if query passes and logs exception in terminal as stdout.

query = 'somequery'
db.ExecuteQuery()

Return Query as Dictionary

parms: GetRecordsAsDict(query:str)

We use this for select statements or any other query that returns a table as a result.

query = "SELECT 'Connection Passed' AS Result"
db.GetRecordsAsDict(query)

stdout

{'results': [{'Result': 'Connection Passed'}]}

Return Query as Column List

parms: GetRecordsOfColumn(query:str,ColumnName:str)

We use this for select statements or any other query that returns a table as a result.

db.GetRecordsOfColumn("SELECT 'Connection Passed' AS Result", "Result")

stdout

['Connection Passed']

Create CSV Table Schema

parms: CreateCSVTable(csvfile:str)

Creates a SQL Table with varchar(max) columns such that it can be ready to be inserted to based on the .csv column names

Assumption: somefile.csv

name,surname,phonenumber
test,testor,01234567810
path = 'C:/somefile.csv'
db.CreateCSVTable(path)

In SQL Table somefile.dbo

|name|surname|phonenumber|

Insert CSV Table

parms: InsertCSVTable(csvfile:str)

Assumption: somefile.csv

name,surname,phonenumber
test,testor,01234567810
path = 'C:/somefile.csv'
db.InsertCSVTable(path)

In SQL Table somefile.dbo

--------------------------
|name|surname|phonenumber|
|----|-------|-----------|
|test|testor |01234567810|
--------------------------

Insert XML

parms: InsertXMLSQLTable(xmlfilepath:str)

xmlfilepath = 'C:/somexml.xml'
db.InsertXMLSQLTable(xmlfilepath)

Generate Insert Script

parms: InsertScript(df:DataFrame,tblName:str,isNEWID:bool=False)

df = pd.DataFrame({'name':['test','test2'],'surname':['testor','testor2'],'phonenumber':['01234567810','01234567810']})
db.InsertScript(df,'somefile')

stdout

'''
INSERT INTO [somefile]
VALUES
('test','testor','01234567810'),
('test2','testor2','01234567810')
'''

Generate Update Script

parms: UpdateScript(dataDict:dict,whereCondition:str,tblName:str)

dataDict = {'name':'test','surname':'testor','phonenumber':'01234567810'}
whereCondition = "name = 'test'"
db.UpdateScript(dataDict,whereCondition,'somefile')

stdout

'''
UPDATE [dbo].[somefile]
SET
[name] = 'test',
[surname] = 'testor',
[phonenumber] = '01234567810'
WHERE
name = 'test'
'''

Generate Delete Script

parms: DeleteScript(whereCondition:str,tblName:str)

whereCondition = "name = 'test'"
db.DeleteScript(whereCondition,'somefile')

stdout

'''
DELETE FROM [dbo].[somefile]
WHERE
name = 'test'
'''

Generate Select Script

parms: SelectScript(whereCondition:str,tblName:str)

whereCondition = "name = 'test'"
db.SelectScript(whereCondition,'somefile')

stdout

'''
SELECT * FROM [dbo].[somefile]
WHERE
name = 'test'
'''

Execute Script

parms: ExecuteScript(query:str)

query = "SELECT 'Connection Passed' AS Result"
db.ExecuteScript(query)

stdout

{'results': [{'Result': 'Connection Passed'}]}
Copyright ADGSTUDIOS 2023

Release files for sqlserver 0.0.17.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sqlserver 0.0.17.1
File Size Uploaded
sqlserver-0.0.17.1.tar.gz 5.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sqlserver 0.0.17.1
File Interpreter ABI Platform
sqlserver-0.0.17.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.6 kB

Release files / sqlserver-0.0.17.1.tar.gz

Download URL sqlserver-0.0.17.1.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d5ac71a8d7ce2e681abceeba221df32bf7cf4228e78386dcdab28657b6eebe89
BLAKE2b-256 checksum
How to use checksums
9acbfe7bf8d0db731fb80e8834d2e3dd9699767dd37036d9178dbb6a03453314
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release files / sqlserver-0.0.17.1-py3-none-any.whl

Download URL sqlserver-0.0.17.1-py3-none-any.whl
Size 4.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22e3176b7fdc0007483115ad8eaf1bfb82beb1029a5b1882166ffd2f945202f7
BLAKE2b-256 checksum
How to use checksums
7a987362a17d3fe63ed11bca0239d7f279bfa76ab99eaa31d4c51f943a5e2f16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.16

Release history Release notifications | RSS feed

This release

0.0.17.1 This release

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.9

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page