データベースにデータを保存するスクリプトを作成しています。初めてPostgeSQLを使用していますが、すべてが計画どおりにうまくいきます。PostgreSQl での Cursor の使用法について考えていましたが、1 つでも十分なのに、たくさん作っているとどうなるでしょうか。しかし、すべての 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
しかし、さらにカーソルを作成して閉じます。大丈夫なはずのマニュアルを読みましたが、これは良い解決策だと思います。しかし、私はまだそれについて少し疑問を持っています。