光标与Python中的连接



哪个比python中的其他更有效。我的要求是建立一个连接,直到我们关闭应用程序。

我有两个类是建立和获得连接/光标,并且可以在服务中获取并获取数据。在Python中进行MVC:)

一个DBConnection类

import pyodbc
class Connection:
    def getconnection(self):
        conn =  pyodbc.connect('Driver={SQL Server};Server=.SQLEXPRESS;Database=School;Trusted_Connection=yes;')
        print("Connection Established")
        #cursor = conn.cursor()
        return conn
    def getcursor(self):
        conn = pyodbc.connect('Driver={SQL Server};Server=.SQLEXPRESS;Database=School;Trusted_Connection=yes;')
        print("Connection Established")
        cursor = conn.cursor()
        return cursor

和一个服务类

import Connection
import pyodbc
class StudentDataService:
    connection = Connection.Connection().getconnection()
    cursor = Connection.Connection().getcursor()
    def getstudentdata(self):
        print("In method getStudentdata()")
        try:
            row = self.connection.execute('select * from StudentGrade')
            studentList = list(row)
            return studentList
        except pyodbc.DatabaseError as err:
            print("Error Occurred while fetching Student Records", err)
            return None
        finally:
            self.connection.close()
    def getcursorstudentdata(self):
        print("In method getcursorstudentdata()")
        try:
            row = self.cursor.execute('select * from StudentGrade')
            studentList = list(row)
            return studentList
        except pyodbc.DatabaseError as err:
            print("Error Occurred while fetching Student Records", err)
            return None
        finally:
            self.cursor.close()

stu = StudentDataService()
print(stu.getstudentdata())
print("++++++++++++++++++++++++++++++++")
print(stu.getcursorstudentdata())

两个都给我结果

Connection Established
Connection Established
In method getStudentdata()
[(1, 2021, 2, Decimal('4.00')), (2, 2030, 2, Decimal('3.50')),... ]
++++++++++++++++++++++++++++++++
In method getcursorstudentdata()
[(1, 2021, 2, Decimal('4.00')), (2, 2030, 2, Decimal('3.50')),... ]

所以我的混乱是,要使用哪一个?

在pyodbc中, connection.execute只是创建光标和执行cursor.execute的方便。该文档中涵盖了以下文档:

https://github.com/mkleehammer/pyodbc/wiki/connection#execute

execute()

此功能不是Python DB API的一部分。

创建一个新的Cursor对象,调用其执行方法,然后返回 新光标。

num_products = cnxn.execute("SELECT COUNT(*) FROM product")

有关更多详细信息,请参见Cursor.execute()。这是一种便利方法 那不是DB API的一部分。由于新的Cursor由 每个呼叫,如果超过一个SQL语句,则不应使用此通话 需要在连接上执行。

如有疑问,只需使用Cursor.execute即可。

相关内容

  • 没有找到相关文章

最新更新