- Open Python Environment in Visual Studio by clicking VIEW, Other Windows, then Python Environment.
- Now click on Python Interpreter which you have installed in your system (Note: A Computer can contain more than 1 Python interpreter), select pip from the drop-down and search form pypyodbc.
Note: "pypyodbc" is a module that is used to connect to the database and perform operations on that. pypyodbc can be used with any type of database: Oracle, SQL Server, MySQL, Microsoft Access or Excel, etc.
After successfully installing
pypyodbc. Now open SQL Server and create a database and create the table.
I am creating a database
Payroll and inside that database, I am creating a table named
EmployeeMaster which contains the following fields.
Here EmployeeID is the primary key and Auto Incremented.
You can use the following code to create this EmployeeMaster table.
- CREATE TABLE EmployeeMaster(
- EmployeeID int IDENTITY(1,1) NOT NULL,
- Name nvarchar(100) NOT NULL,
- Salary decimal(18, 2) NOT NULL,
- Mobile varchar(15) NOT NULL,
- Designation varchar(50) NOT NULL,
- CONSTRAINT [PK_EmployeeMaster1] PRIMARY KEY CLUSTERED
- (
- [EmployeeID] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
Now switch to visual studio again and now we will see database connection insert, update, delete and select operations with Python step by step.
Connect to SQL Server Database: The following Python code shows you how you can connect to the SQL Server database.
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- print("Connection Successfully Established")
-
-
- connection.close()
Connect in the function which contains connection string.
- Driver for connection to a particular database.
- Server: Which database server we are using.
- Database: Name of the database which we will use.
- uid: the user ID of the database server.
- pwd: Password for connection to the database.
Insert Data To Database
The following command is used to Insert data into the database.
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
- SQLCommand = ("INSERT INTO EmployeeMaster(Name, Salary, Mobile, Designation) VALUES ('Sourabh','200000','9928486447','Computer Programmer')")
-
- cursor.execute(SQLCommand)
-
- connection.commit()
-
- connection.close()
- print("Data Successfully Inserted")
Here,
- cursor() : This is a method which returns a new cursor object using the connection.
- execute() : Prepares and executes SQL.
- commit() : Commits any pending transaction to the database.
And check the database, it will contain data which you have inserted.
Using Question Mark (?)
We can also execute our query with a question mark sign. Sometimes we need to insert our data at run time and we want to form our query with the + symbol and sometimes we forget to open/close double quotes or single quotes or plus symbols. So we can also execute our query with Question Mark Sign? like the following:
- SQLCommand = ("INSERT INTO EmployeeMaster(Name, Salary, Mobile, Designation) VALUES (?,?,?,?)")
And we will execute our query like the following:
- Values = [Name,Salary,Mobile,Designation]
-
- cursor.execute(SQLCommand,Values)
Example
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
- Name= "DJ"
- Salary=50000
- Mobile="9876543210"
- Designation="Computer Programmer"
-
-
-
- SQLCommand = ("INSERT INTO EmployeeMaster(Name, Salary, Mobile, Designation) VALUES (?,?,?,?)")
- Values = [Name,Salary,Mobile,Designation]
-
-
- cursor.execute(SQLCommand,Values)
-
- connection.commit()
-
- connection.close()
- print("Data Successfully Inserted")
Output
Data read from user and inserted into the database
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
- Name= input("Please Enter Name:")
- Salary=input("Please Enter Salary:")
- Mobile=input("Please Enter Mobile Number:")
- Designation=input("Please Enter Designation:")
-
-
-
- SQLCommand = ("INSERT INTO EmployeeMaster(Name, Salary, Mobile, Designation) VALUES (?,?,?,?)")
- Values = [Name,Salary,Mobile,Designation]
-
-
- cursor.execute(SQLCommand,Values)
-
- connection.commit()
-
- connection.close()
- print("Data Successfully Inserted")
Output
Inside Database
Update In Database
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
- SQLCommand = ("Update EmployeeMaster set Name='Dhananjay' where EmployeeID=2")
-
- cursor.execute(SQLCommand)
-
- connection.commit()
-
- connection.close()
- print("Updated Successfully")
Output
Inside Database
Delete From the Database
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
- SQLCommand = ("Delete from EmployeeMaster where EmployeeID=3")
-
- cursor.execute(SQLCommand)
-
- connection.commit()
-
- connection.close()
- print("Deleted Successfully")
Output
Inside Database
Retrieve Data from the Database
We can retrieve data from the database in two ways.
- Fetch one row at a time: We call fetchone() method.
- Fetch all rows: We call fetchall() method.
fetchone method example
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
-
- SQLCommand = ("select * from EmployeeMaster")
-
- cursor.execute(SQLCommand)
- results = cursor.fetchone()
- while results:
- print ("Name:" + str(results[0]))
- print ("Salary:" + str(results[1]))
- print ("Mobile:" + str(results[2]))
- print ("Designation:" + str(results[3]))
- print()
- results = cursor.fetchone()
-
-
- connection.close()
Fetch All Rows
The following example shows how can we fetch all the rows at a time from the database using
fetchall() method.
-
- import pypyodbc
-
- connection = pypyodbc.connect('Driver={SQL Server};Server=.\\sqlexpress;Database=Payroll;uid=sa;pwd=sa')
-
- cursor = connection.cursor()
-
-
- SQLCommand = ("select * from EmployeeMaster")
-
- cursor.execute(SQLCommand)
- i=1
- for rows in cursor.fetchall():
- print("------------Employee %d-----------------"%i)
- for field in rows:
- print(str(field))
- print("---------------------------------------")
- print('')
- i=i+1
-
-
- connection.close()
Output