我正在构建一个脚本来将一些数据存储在数据库中。我第一次使用 PostgeSQL,一切都按计划进行。我正在考虑在 PostgreSQl 中使用光标,以及如果我制作很多光标而一个就足够了怎么办。但我不想将光标传递给我所有的 SQL 函数。
这是我的简化示例。
dbConn, dbCurs = openDataBase(config)
doSomeThing(dbCurs, name, age, listOfJohns)
def doSomething(dbCurs, name, age, listOfPoeple):
listOfPoeple SQLnrOfPeopleNamed(dbCurs, name, age)
#here some fine checking if there's a list
#room for more code. etc. etc.
def SQLnrOfPeopleNamed(dbCurs, inpName, inpAge)
dbCurs.execute(Some SQL-thingy)
#check and return result
dbCurs 是传递给每个包含 SQL 查询的函数的值。现在是 dbCurs 非常特定于 PostgreSQL。每当我将此数据库更改为 eq MySQL 时,我都必须重写查询函数 SQLnrOfPeople,以及与这些函数的接口。
我想有我只需要重写SQL函数的功能的情况。所以,我正在考虑在每个 SQL 函数中创建一个 Cursor 类并关闭它。这将产生一个更通用的接口,其中只需要连接。
dbConn = openDataBase(config)
doSomeThing(dbConn, name, age, listOfJohns)
def doSomething(dbConn, name, age, listOfPoeple):
listOfPoeple SQLnrOfPeopleNamed(dbConn, name, age)
#here some fine checking if there's a list
#room for more code. etc. etc.
def SQLnrOfPeopleNamed(dbConn, inpName, inpAge)
dbCurs = dbConn.cursor()
dbCurs.execute(Some SQL-thingy)
#check and return result
但我会创建并关闭更多游标。我在手册中阅读应该没问题,我认为这是一个很好的解决方案。但我还是有点怀疑。