使用SQL数据库在Python中执行CRUD操作

目录

介绍

背景

在Visual Studio中创建一个Python项目

在SQL中创建数据库和表

为数据库创建配置文件

安装Python包 “Pypyodbc”

创建连接文件

创建新记录

读数据

更新现有记录

删除数据

结论


介绍

本实践演示将帮助您了解如何使用SQL数据库在Python中实现CRUDCREATEREADUPDATEDELETE)操作功能。对于与数据库关联的任何应用程序,我们执行一些操作来插入记录[C = Create],读取记录[R = Read],用新值[U = Update]更新现有记录或从数据库中删除记录[D =删除]。因此,在讨论我们必须使用数据库的任何应用程序时,这四个操作是必需的。

背景

今天,我们将尝试使用简单的Python应用程序实现此CRUD操作功能。我们将使用SQL Server进行此演示,并了解我们如何与SQL服务器建立连接。我们将按照一步一步的实际演示,详细介绍每一步。步骤如下。

  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。如果需要,您还可以更改此应用程序的位置,然后单击“  确定

这需要一些时间,您的项目将准备就绪。

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数据库的连接时,还将使用这些属性。因此,打开Solution Explorer并右键单击  Project 并选择  Add> New Item它将打开类似如下的“ Add New Item ”窗口。在这个窗口中,我们必须选择  “Empty Python File”  并提供有价值的名称 “config.py”并单击Add。单击Add后,它将在项目中添加一个新的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包。

更多信息.. https://pypi.org/project/pypyodbc/

要在项目环境中安装新软件包,请右键单击python环境并选择“ 安装Python软件包... ”

它将打开Python环境窗口,您可以在其中找到所有安装环境,在其下方,我们有一个搜索框,我们可以从中搜索任何特定包并安装它。所以,只需搜索pypyodbc,如下图所示,然后单击安装pypyodbc1.3.5

一旦安装了pypyodbc就可以在输出(Output)窗口中看到成功安装的消息,并在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函数。正如您可以看到下面的代码,这是我们在Visual Studio中使用类似项目名称创建项目时自动创建的PythonCRUD.py文件。在这里,首先,我们将所有必需的模块导入,像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. try-except-finally块中维护执行。
  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('Somethng worng, please check')

        finally:
           # Close the connection
           connection.close()

让我们运行项目,你会得到类似于下面的窗口。在这里,您将获得您选择的选项。因此,首先选择您的选项C这意味着,您将创建一个新记录。 

它将要求分别输入名称和年龄,数据将以适当的消息保存,如“数据已成功保存”。

 读数据

让我们再创建一个文件 “read.py”来读取数据并打印出来。在这里,我们也将执行与创建时相同的操作。 

  1. 首先从db_connection 文件获取数据库连接  
  2. 创建选择查询并执行它。
  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作为读取数据的选项,然后按回车键。您将获得如下输出。

 更新现有记录

现在,是时候更新现有记录了。因此,首先让我们再创建一个文件“update.py”,然后按如下方式编写代码。在这里,我们必须先获取需要更新的记录,然后我们将为该记录提供新值并进行更新。

import db_connection as dbConn;

class Update:
    def func_UpdateData(self):
        # Ge the sql connection
        connection = dbConn.getConnection()

        id = input('Enter Employee Id = ')
    
        try:
           # Fethc 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('Somethng worng, please check')

        finally:
           # Close the connection
           connection.close()

这次运行项目时,只需选择U作为更新记录的选项。首先,它将要求输入将要更新的员工ID并显示该员工的数据。接下来,它将要求输入该员工的姓名和年龄的更新数据并进行更新。一旦成功更新,它将显示确认消息。

 删除数据

在这里,我们将尝试删除现有记录。因此,让我们再创建一个用于删除操作的文件 “delete.py”在这里,我们将首先要求用户输入需要删除的员工ID,并根据该ID显示该员工的数据。

下一条消息将要求您确认是否愿意删除。我们有两个选项“Y”“N”。如果要删除记录只需按即可。 

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('Somethng worng, please check')
        finally:
            connection.close()

运行项目并选择最后一个选项D以删除记录并提供需要删除的员工ID。提供员工ID后,首先会显示记录数据并要求确认。如果您提供Y作为确认,则它将删除记录并显示数据已成功删除的确认消息。

结论

所以,今天我们学习了如何使用SQL数据库在python中执行CRUD操作。

我希望这篇文章可以帮到你。如果您喜欢这篇文章,请与您的朋友分享。谢谢

 

原文地址:https://www.codeproject.com/Articles/1275121/CRUD-Operations-in-Python-with-SQL-Database

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值