目录
介绍
背景
在Visual Studio中创建一个Python项目
在SQL中创建数据库和表
为数据库创建配置文件
安装Python包 “Pypyodbc”
创建连接文件
创建新记录
读数据
更新现有记录
删除数据
结论
本实践演示将帮助您了解如何使用SQL数据库在Python中实现CRUD(CREATE,READ,UPDATE和DELETE)操作功能。对于与数据库关联的任何应用程序,我们执行一些操作来插入记录[C = Create],读取记录[R = Read],用新值[U = Update]更新现有记录或从数据库中删除记录[D =删除]。因此,在讨论我们必须使用数据库的任何应用程序时,这四个操作是必需的。
今天,我们将尝试使用简单的Python应用程序实现此CRUD操作功能。我们将使用SQL Server进行此演示,并了解我们如何与SQL服务器建立连接。我们将按照一步一步的实际演示,详细介绍每一步。步骤如下。
如上所述定义了本文的目标。因此,不要浪费太多时间,让我们转向实际实现。
打开Visual Studio 2017并转到文件>新建>项目。它将打开 New Project 窗口,现在只需要从左侧面板中的已安装 部分和中间部分选择 Python,只需单击“ Python Application ”并提供合适的名称“ PythonCRUD”。如果需要,您还可以更改此应用程序的位置,然后单击“ 确定”。
这需要一些时间,您的项目将准备就绪。
因为我们已准备好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包。
更多信息.. https://pypi.org/project/pypyodbc/
要在项目环境中安装新软件包,请右键单击python环境并选择“ 安装Python软件包... ”。
它将打开Python环境窗口,您可以在其中找到所有安装环境,在其下方,我们有一个搜索框,我们可以从中搜索任何特定包并安装它。所以,只需搜索pypyodbc,如下图所示,然后单击“安装pypyodbc(1.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 = Create,R = Read,U = Update和D = 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)”,此方法将负责在数据库中添加新记录。在这里,我们正在做以下事情。
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”来读取数据并打印出来。在这里,我们也将执行与创建时相同的操作。
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”。如果要删除记录,只需按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('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