MySQLdbまたはpython2/3を接続するための他のパッケージを使用してSQL接続に出くわすすべての人に、これを知る必要があるすべての人にベストプラクティスを繰り返します。
(次のモック実行は、SQLデータベースにtablenameという名前のテーブルがあることを前提としています。field1、field2、field3、field4という名前の4つの列/フィールドがあります)。接続がローカル(同じマシン)の場合、「localhost」とも呼ばれる127.0.0.1です。
プロセスは単純な7つのステップです
- 接続を作成する
- カーソルを作成
- クエリ文字列を作成する
- クエリを実行します
- クエリにコミットする
- カーソルを閉じる
- 接続を閉じます
これがステムモックランによる簡単なステップです
mydb = MySQLdb.connect(host=host, user=user, passwd=passwd, db=database, charset="utf8")
cursor = mydb.cursor()
query = "INSERT INTO tablename (text_for_field1, text_for_field2, text_for_field3, text_for_field4) VALUES (%s, %s, %s, %s)"
cursor.execute(query, (field1, field2, field3, field4))
mydb.commit()
cursor.close()
mydb.close()
接続とカーソルが異なります。接続はSQLレベルですが、カーソルはデータ要素と見なすことができます。1つの接続内で同じデータに複数のカーソルを置くことができます。同じコンピュータから同じデータに複数の接続があるのは珍しいことです。
詳細については、ここで説明しています
。「カーソルパラダイムはPythonに固有のものではなく、データベース自体で頻繁に使用されるデータ構造です。
基盤となる実装によっては、データベースへの同じ接続を共有する複数のカーソルを生成できる場合があります。カーソルを閉じると、DBからフェッチされなかった(またはフェッチされたが使用されなかった)結果など、クエリに関連付けられたリソースが解放されますが、データベース自体への接続が失われることはないため、同じデータベースで新しいカーソルを取得できます。再度認証する必要はありません。」