使用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操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值