使用SQL數據庫在Python中進行CRUD操作

目錄

介紹

背景

在Visual Studio中創建一個Python項目

在SQL中創建數據庫和表

爲數據庫創建配置文件

將Python軟件包安裝爲“Pypyodbc”

創建一個連接文件

建立新記錄

讀取數據

更新現有記錄

刪除數據

結論


介紹

該實際演示將幫助您瞭解如何在帶有SQL數據庫的Python中實現CRUD(創建、讀取、更新和刪除)操作功能。對於與數據庫關聯的任何應用程序,我們執行一些操作,以插入記錄[C =創建],讀取記錄[R =讀取],用新值[U = Update]更新現有記錄或從數據庫中刪除記錄[D = Delete]。因此,在談論我們必須使用數據庫的任何應用程序時,這四個操作是必不可少的。

1天:在現有的Visual Studio 2017中設置和測試Python環境

2天:V Visual Studio 2017中的第一個Python項目

背景

今天,我們將嘗試通過一個簡單的Python應用程序來實現此CRUD操作功能。我們將使用SQL Server進行此演示,並瞭解如何與SQL Server建立連接。我們將逐步進行實際演示,並詳細介紹每個步驟。步驟如下:

  1. Visual Studio 2017中創建Python項目
  2. SQL中創建數據庫和表
  3. 爲數據庫創建配置文件
  4. Python軟件包安裝爲“Pypyodbc”
  5. 創建一個連接文件
  6. 創建新紀錄
  7. 讀取數據
  8. 更新現有記錄
  9. 刪除數據

我已經在上面爲本文定義了目標。因此,在不浪費大量時間的情況下,讓我們開始實際的實現。

Visual Studio中創建一個Python項目

打開Visual Studio 2017,然後轉到文件>新建>項目。它將打開New Project窗口,現在只需從左側面板的已安裝部分和中間部分中選擇Python,只需單擊Python Application並提供合適的名稱PythonCRUD即可。如果願意,還可以更改此應用程序的位置,然後單擊確定

這將需要一些時間,並且您的項目將準備就緒。您還可以閱讀本文,以獲取有關如何在Visual Studio中創建第一個Python應用程序的分步信息。

SQL中創建數據庫和表

我們已經準備好一個Python項目,並且已經準備好實現CRUD操作,但是在此之前,讓我們在SQL Server中創建數據庫和表。這樣我們就可以對實時數據庫執行CRUD操作。在這裏,我們將創建一個簡單的數據庫Test,並創建一個簡單的表Employee,如下所示。以下是用於創建數據庫和表的SQL腳本。您可以直接執行它。成功執行後,您可以在SQL Server中找到Test數據庫以及Employee表。

CREATE DATABASE Test
GO

USE Test
GO

CREATE TABLE Employee(Id int PRIMARY KEY IDENTITY(1,1),	Name varchar(255) NULL,	Age int NULL)

爲數據庫創建配置文件

現在,讓我們在該項目中添加一個配置文件,在其中定義所有屬性及其值。這些屬性將在創建與SQL數據庫的連接時進一步使用。因此,打開解決方案資源管理器並右鍵單擊Project然後選擇Add> New Item它將打開添加新項 ”窗口,如下所示。在此窗口中,我們必須選擇“Empty Python File”並提供有價值的名稱config.py ,然後單擊添加。單擊添加後,它將在項目中添加一個新的Python文件作爲config.py

現在,讓我們修改config.py ”並添加SQL數據庫連接所需的必需屬性及其值,如下所示。在這裏,我們需要驅動程序名稱、服務器名稱、數據庫名稱以及憑據作爲用戶名和密碼。這些屬性位於對象內部,以便我們稍後使用。

# SQL Server Database Connection Properties
DATABASE_CONFIG ={
    'Driver': 'SQL Server',
    'Server': 'DESKTOP-QQ95JAD',
    'Database': 'Test',
    'UID': 'sa',
    'Password': 'xxxxxxx'
    }

Python軟件包安裝爲“Pypyodbc”

接下來,我們將安裝一個Python軟件包,該軟件包是建立數據庫連接和在數據庫上執行命令所必需的。它是Pypyodbc用於數據庫操作的純Python軟件包。

按照PyPi.OrgPypyodbc是一個Python腳本,運行在CPython/IronPython/PyPy上,版本2.4 /2.5/2.6/2.7/3.2/3.3win/ Linux32/64位。有關更多.. https://pypi.org/project/pypyodbc/

要在項目環境中安裝新軟件包,請右鍵單擊Python環境,然後選擇Install Python Package .. ”

它將打開Python Environments窗口,您可以在其中找到所有安裝環境,在它的下面,我們有一個搜索框,從中可以搜索任何特定的軟件包並進行安裝。因此,只需如下圖所示進行搜索pypyodbc,然後單擊“ Install pypyodbc1.3.5 ”

一旦安裝了pypyodbc 就可以在輸出窗口中看到成功安裝的消息,並在Python環境中也可以找到該軟件包。

創建一個連接文件

任何與數據庫一起使用並執行數據庫操作的應用程序都具有創建和管理與數據庫的連接的機制。在此應用程序中,我們將執行相同的操作並創建一個數據庫連接文件,該文件將使用配置文件中定義的配置生成連接。讓我們創建一個新的python文件db_connection.py,並在其中創建一個方法。此方法(getConnection())將根據config.py定義的數據庫配置返回數據庫連接。

首先,讓我們導入pypyodbc,以便我們可以使用它。爲了訪問config.py定義的配置屬性,我們首先必須使用import filename” 導入該文件,然後才能直接訪問該對象。

import pypyodbc
import config

# Return the sql connection 
def getConnection():
     connection = pypyodbc.connect("Driver= {"+config.DATABASE_CONFIG["Driver"]+"} ;
     Server=" + config.DATABASE_CONFIG["Server"] + ";
     Database=" + config.DATABASE_CONFIG["Database"] + ";
     uid=" + config.DATABASE_CONFIG["UID"] + ";pwd=" + config.DATABASE_CONFIG["Password"])
     return connection

現在,讓我們從開始執行的地方裝飾main函數。如您所見,以下代碼是PythonCRUD.py文件,當我們在Visual Studio中使用與項目名稱相似的名稱創建項目時,將自動創建該文件。在這裏,首先,我們將導入所有必需的模塊,如用於數據庫連接的pypyodbc和使用SQL Server的操作、用於根據上面提供的配置獲得連接的db_connection。以及另外四個文件,分別用於執行CRUD操作的讀取、創建、更新和刪除。

第一個屏幕將爲用戶提供可供選擇的選項,例如C = CreateR = ReadU = UpdateD = Delete

import pypyodbc
import db_connection as dbConn
from read import Read
from create import Create
from update import Update
from delete import Delete

def main():
    print('Available Options: C=Create, R=Read, U=Update, D=Delete ')
    choice = input('Choose your option = ')

    if choice == 'C':
        createObj=Create()
        createObj.func_CreateData()
    elif choice == 'R':
        readObj =  Read()
        readObj.func_ReadData()
    elif choice == 'U':
        updateObj = Update()
        updateObj.func_UpdateData()
    elif choice == 'D':
        deleteObj = Delete()
        deleteObj.func_DeleteData()
    else:
        print('Wrong choice, You are going exist.')

# Call the main function
main()

建立新記錄

完成許多工作後,例如項目創建,數據庫和表創建,爲數據庫創建配置文件,創建連接文件等。現在,讓我們從python文件移動並創建新記錄並將其保存到數據庫中。

因此,首先要創建一個新的空python文件,如create.py,與我們在上述步驟中創建的文件相同。在此文件中,將類創建爲Create,將方法創建爲func_CreateData(self) 該方法將負責在數據庫中添加新記錄。在這裏,我們正在做以下事情。

  1. 首先,從db_connection文件獲取數據庫連接。
  2. 輸入兩個用於分別輸入名稱和年齡的值。
  3. 使用輸入值(名稱,年齡)創建插入查詢並執行。
  4. 提交連接,以便將值提交到數據庫表中。
  5. finally塊中,關閉連接。
  6. 在執行tryexceptfinally塊中維護。
  7. 打印有價值的消息。
import db_connection as dbConn

class Create:
    def func_CreateData(self):

        # Get the sql connection
        connection = dbConn.getConnection()
                
        name = input('Enter Name = ')
        age = input('Enter Age = ')

        try:
           query = "Insert Into Employee(Name, Age) Values(?,?)" 
           cursor = connection.cursor()

           # Execute the sql query
           cursor.execute(query, [name, age])

           # Commit the data
           connection.commit()
           print('Data Saved Successfully')

        except:
             print('Something wrong, please check')

        finally:
           # Close the connection
           connection.close()

讓我們運行項目,您將獲得類似於下面的窗口。在這裏,您將獲得可供選擇的選項[代碼將在本文的底部提供]。因此,首先選擇您的選項作爲C這意味着,您將創建一個新記錄。

它將要求分別輸入名稱和年齡,數據將以適當的消息數據已成功保存進行保存

讀取數據

讓我們再創建一個文件read.py來讀取和打印數據。在這裏,我們還將執行與創建時相同的操作。

  1. 首先,從db_connection 文件獲取數據庫連接。
  2. 創建select查詢並執行它。
  3. 獲取某個變量中的值,這裏我們獲取一個遊標。
  4. 在遊標上循環並打印值。
import db_connection as dbConn

class Read:
    def func_ReadData(self):   
        # Get the sql connection
        connection = dbConn.getConnection()
        cursor = connection.cursor()

        # Execute the sql query
        cursor.execute('Select * from Employee')

        # Print the data
        for row in cursor:
            print('row = %r' % (row,))

在運行項目時,只需選擇R作爲讀取數據的選項,然後按Enter。您將獲得如下輸出:

更新現有記錄

現在,該更新現有記錄了。因此,爲此,首先讓我們再創建一個文件update.py,並編寫如下代碼。在這裏,我們必須首先獲取需要更新的記錄,然後爲該記錄提供新值並進行更新。

import db_connection as dbConn;

class Update:
    def func_UpdateData(self):
        # Get the SQL connection
        connection = dbConn.getConnection()

        id = input('Enter Employee Id = ')
    
        try:
           # Fetch the data which needs to be updated
           sql = "Select * From Employee Where Id = ?" 
           cursor = connection.cursor()
           cursor.execute(sql, [id])
           item = cursor.fetchone()
           print('Data Fetched for Id = ', id)
           print('ID\t\t Name\t\t\t Age')
           print('-------------------------------------------')       
           print(' {}\t\t {} \t\t\t{} '.format(item[0], item[1], item[2]))
           print('-------------------------------------------')
           print('Enter New Data To Update Employee Record ')

           name = input('Enter New Name = ')
           age = input('Enter New Age = ')
           query = "Update Employee Set Name = ?, Age =? Where Id =?" 
       
           # Execute the update query
           cursor.execute(query, [name, age, id])
           connection.commit()
           print('Data Updated Successfully')

        except:
             print('Something wrong, please check')

        finally:
           # Close the connection
           connection.close()

這次在運行項目時,只需選擇U作爲更新記錄的選項。首先,它將要求輸入要更新的員工ID,並顯示該員工的數據。接下來,它將要求輸入該僱員的姓名和年齡的更新數據並進行更新。成功更新後,將顯示確認消息。

刪除數據

在這裏,我們將嘗試刪除現有記錄。因此,讓我們再創建一個用於刪除操作的文件delete.py 在這裏,我們將首先要求用戶輸入需要刪除的員工ID,並根據該ID顯示該員工的數據。

下一條消息將要求您確認是否願意刪除。我們有兩個選項:YN。如果要刪除記錄,只需按Y

import db_connection as dbConn;

class Delete:
    def func_DeleteData(self):
        # Get the SQL connection
        connection = dbConn.getConnection()

        id = input('Enter Employee Id = ')
    
        try:
           # Get record which needs to be deleted
           sql = "Select * From Employee Where Id = ?" 
           cursor = connection.cursor()
           cursor.execute(sql, [id])
           item = cursor.fetchone()
           print('Data Fetched for Id = ', id)
           print('ID\t\t Name\t\t\t Age')
           print('-------------------------------------------')       
           print(' {}\t\t {} \t\t\t{} '.format(item[0], item[1], item[2]))
           print('-------------------------------------------')
           confirm = input('Are you sure to delete this record (Y/N)?')

           # Delete after confirmation
           if confirm == 'Y':
               deleteQuery = "Delete From Employee Where Id = ?"
               cursor.execute(deleteQuery,[id])
               connection.commit()
               print('Data deleted successfully!')
           else:
                print('Wrong Entry')
        except:
            print('Something wrong, please check')
        finally:
            connection.close()

運行項目,然後選擇最後一個選項D作爲刪除記錄,並提供需要刪除的員工ID。提供員工編號後,首先將顯示記錄數據並要求確認。如果提供Y作爲確認,則它將刪除記錄並顯示確認消息,表明數據已成功刪除。

結論

因此,今天,我們已經學習瞭如何在帶有SQL數據庫的Python中執行CRUD操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章