Python-data-access-quick-guide
Python MySQL-はじめに
データベースインターフェイスのPython標準は、Python DB-APIです。 ほとんどのPythonデータベースインターフェイスは、この標準に準拠しています。
アプリケーションに適したデータベースを選択できます。 Python Database APIは、次のような幅広いデータベースサーバーをサポートしています-
- ガドフライ
- mSQL
- MySQL
- PostgreSQL
- Microsoft SQL Server 2000
- Informix
- Interbase
- オラクル
- Sybase
利用可能なPythonデータベースインターフェイスのリストは次のとおりです。https://wiki.python.org/moin/DatabaseInterfaces [PythonデータベースインターフェイスとAPI]。 アクセスする必要のあるデータベースごとに個別のDB APIモジュールをダウンロードする必要があります。 たとえば、MySQLデータベースだけでなくOracleデータベースにもアクセスする必要がある場合、OracleとMySQLデータベースモジュールの両方をダウンロードする必要があります。
mysql-connector-pythonとは何ですか?
MySQL Python/Connectorは、PythonからMySQLデータベースサーバーに接続するためのインターフェイスです。 Python Database APIを実装し、MySQLの上に構築されています。
mysql-connector-pythonをインストールするにはどうすればよいですか?
まず最初に、あなたのマシンに既にpythonがインストールされていることを確認する必要があります。 これを行うには、コマンドプロンプトを開き、そこにpythonと入力してEnterキーを押します。 pythonが既にシステムにインストールされている場合、このコマンドは以下に示すようにバージョンを表示します-
_ctrl + z_を押してからEnterを押して、Pythonシェルから抜け出し、Python_MySQLという名前のフォルダー(Python-MySQLコネクターをインストールする予定)を作成します-
PIPを検証する
PIPは、Pythonのさまざまなモジュール/パッケージをインストールできるPythonのパッケージマネージャーです。 したがって、Mysql-python mysql-connector-pythonをインストールするには、コンピューターにPIPがインストールされており、その場所がパスに追加されていることを確認する必要があります。
そのためには、pipコマンドを実行します。 システムにPIPがない場合、または Path 環境変数にその場所を追加していない場合、次のようなエラーメッセージが表示されます-
PIPをインストールするには、上記で作成したフォルダにhttps://bootstrap.pypa.io/get-pip.py[get-pip.py]をダウンロードし、コマンドから次のようにナビゲートしてpipをインストールします-
mysql-connector-pythonのインストール
PythonとPIPをインストールしたら、以下に示すようにコマンドプロンプトを開き、pip(オプション)をアップグレードします-
次に、管理者モードでコマンドプロンプトを開き、python MySQLをインストールします。
検証
のインストールを確認するには、次の行を含むサンプルPythonスクリプトを作成します。
インストールが成功した場合、それを実行すると、エラーが発生しないはずです-
Pythonをゼロからインストールする
単に、Pythonをゼロからインストールする必要がある場合。 https://www.python.org [Python Home Page]にアクセスしてください。
たとえば、python-3.7.4.exe(Windows用)をダウンロードしました。 ダウンロードした_.exe_ファイルをダブルクリックして、インストールプロセスを開始します。
[パスにPython 3.7を追加]オプションをオンにして、インストールを続行します。 このプロセスの完了後、pythonがシステムにインストールされます。
Python MySQL-データベース接続
MySQLに接続するには、(1つの方法は)以下に示すようにシステムでMySQLコマンドプロンプトを開きます-
ここでパスワードを要求します。インストール時にデフォルトユーザー(root)に設定したパスワードを入力する必要があります。
次に、MySQLとの接続が確立され、次のメッセージが表示されます-
mysql>プロンプトでexitコマンドを使用すると、いつでもMySQLデータベースから切断できます。
Pythonを使用してMySQLとの接続を確立する
Pythonを使用してMySQLデータベースへの接続を確立する前に、次のことを想定します-
mydbという名前のデータベースを作成したこと。
FIRST_NAME、LAST_NAME、AGE、SEX、およびINCOME列を含むテーブルEMPLOYEEを作成しました。
MySQLとの接続に使用している資格情報は、ユーザー名: root 、パスワード: password です。
例
以下は、MySQLデータベース「mydb」と接続する例です。
出力
実行すると、このスクリプトは次の出力を生成します-
以下に示すように、資格情報(ユーザー名、パスワード、ホスト名、データベース名)を connection.MySQLConnection() に渡すことで、MySQLへの接続を確立することもできます-
Python MySQL-データベースの作成
CREATE DATABASEクエリを使用して、MYSQLでデータベースを作成できます。
構文
以下は、CREATE DATABASEクエリの構文です-
例
次のステートメントは、MySQLにmydbという名前のデータベースを作成します-
SHOW DATABASESステートメントを使用してデータベースのリストを見ると、以下に示すように、その中に新しく作成されたデータベースを見ることができます-
Pythonを使用してMySQLでデータベースを作成する
MySQLとの接続を確立した後、その中のデータを操作するには、データベースに接続する必要があります。 既存のデータベースに接続するか、独自のデータベースを作成できます。
MySQLデータベースを作成または削除するには、特別な権限が必要です。 したがって、rootユーザーにアクセスできる場合は、任意のデータベースを作成できます。
例
次の例では、MYSQLとの接続を確立し、その中にデータベースを作成します。
出力
Python MySQL-テーブルの作成
CREATE TABLEステートメントは、MYSQLデータベースにテーブルを作成するために使用されます。 ここでは、テーブルの名前と、各列の定義(名前とデータ型)を指定する必要があります。
構文
以下は、MySQLでテーブルを作成するための構文です-
例
次のクエリは、FIRST_NAME、LAST_NAME、AGE、SEX、およびINCOMEという5つの列を持つMySQLのEMPLOYEEという名前のテーブルを作成します。
DESCステートメントは、指定されたテーブルの説明を提供します。 これを使用すると、以下に示すように、テーブルが作成されているかどうかを確認できます-
Pythonを使用してMySQLでテーブルを作成する
- 実行されるクエリを表す文字列値。
- クエリのパラメーター(プレースホルダーの値)を表す、タプル、リスト、または辞書であるオプションのargsパラメーター。
クエリの影響を受ける行の数を表す整数値を返します。
データベース接続が確立されると、CREATE TABLEクエリを* execute()*メソッドに渡すことでテーブルを作成できます。
つまり、python 7minusを使用してテーブルを作成します。
- mysql.connector パッケージをインポートします。
- mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
- 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、_CREATE TABLE_ステートメントをパラメーターとして* execute()*メソッドに渡すことで実行します。
例
次の例では、データベースmydbに Employee という名前のテーブルを作成します。
Python MySQL-データの挿入
構文
以下は、MySQLのINSERT INTOステートメントの構文です。
例
次のクエリは、EMPLOYEEという名前のテーブルにレコードを挿入します。
SELECTステートメントを使用して、挿入操作後にテーブルのレコードを確認できます-
列の名前を常に指定することは必須ではありません。テーブルの列と同じ順序でレコードの値を渡す場合、次のように列名なしでSELECTステートメントを実行できます-
Pythonを使用してMySQLテーブルにデータを挿入する
(カーソルオブジェクトで呼び出される)* execute()*メソッドは、パラメーターとしてクエリを受け取り、指定されたクエリを実行します。 データを挿入するには、MySQL INSERTステートメントをパラメーターとして渡す必要があります。
Pythonを使用してMySQLのテーブルにデータを挿入するには-
- mysql.connector パッケージをインポートします。
- mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
- 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、パラメータとして* execute()メソッドを渡して、 *_ INSERT_ ステートメントを実行します。
例
次の例では、SQL INSERTステートメントを実行して、レコードをEMPLOYEEテーブルに挿入します-
値を動的に挿入する
また、MySQLの INSERT クエリで値の代わりに「%s」を使用して、以下に示すように値をリストとして渡すこともできます-
例
次の例では、レコードをEmployeeテーブルに動的に挿入します。
出力
Python MySQL-データの選択
SELECTクエリを使用して、MySQLのテーブルからデータを取得または取得できます。 このクエリ/ステートメントは、指定されたテーブルの内容を表形式で返し、結果セットとして呼び出されます。
構文
SELECTクエリの構文は次のとおりです-
例
MySQLにcricketers_dataという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のクエリは、テーブルからFIRST_NAMEとCountryの値を取得します。
また、列名のinstatedを使用して各レコードのすべての値を取得することもできます-
Pythonを使用してMYSQLテーブルからデータを読み取る
任意のデータベースに対するREAD操作は、データベースからいくつかの有用な情報を取得することを意味します。 mysql-connector-pythonが提供する* fetch()*メソッドを使用して、MYSQLからデータを取得できます。
_cursor.MySQLCursor_クラスは、* fetchall()、fetchmany()、および fetchone()*という3つのメソッドを提供します。ここで、
- * fetchall()*メソッドは、クエリの結果セット内のすべての行を取得し、それらをタプルのリストとして返します。 (いくつかの行を取得した後にこれを実行すると、残りの行が返されます)。
- * fetchone()*メソッドは、クエリの結果の次の行をフェッチし、タプルとして返します。
- * fetchmany()*メソッドはfetchone()に似ていますが、単一の行ではなく、クエリの結果セット内の次の行セットを取得します。
注意-結果セットは、カーソルオブジェクトを使用してテーブルを照会するときに返されるオブジェクトです。
例
次の例では、SELECTクエリを使用してEMPLOYEEテーブルのすべての行をフェッチし、最初に取得した結果セットから、fetchone()メソッドを使用して最初の行を取得してから、fetchall()メソッドを使用して残りの行をフェッチしています。
出力
次の例では、fetchmany()メソッドを使用して、EMPLOYEEテーブルの最初の2行を取得します。
例
出力
Python MySQL-Where句
MySQLのテーブルの特定の行を取得、削除、または更新する場合は、where句を使用して条件を指定し、操作のためにテーブルの行をフィルタリングする必要があります。
たとえば、where句を含むSELECTステートメントがある場合、指定された条件を満たす行のみが取得されます。
構文
以下はWHERE句の構文です-
例
MySQLにEMPLOYEESという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して4つのレコードを挿入した場合-
次のMySQLステートメントは、収入が4000を超える従業員のレコードを取得します。
Pythonを使用したWHERE句
Pythonプログラムを使用してテーブルから特定のレコードを取得するには-
- mysql.connector パッケージをインポートします。
- mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
- 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、_WHERE_句を使用して_SELECT_ステートメントをパラメーターとして実行し、* execute()*メソッドに渡します。
例
次の例では、Employeeという名前のテーブルを作成し、それを設定します。 次に、where句を使用して、年齢値が23未満のレコードを取得します。
出力
Python MySQL-注文者
SELECTクエリを使用してデータをフェッチしている間、OrderBy句を使用して、結果を目的の順序(昇順または降順)にソートできます。 デフォルトでは、この句は結果を昇順でソートします。降順に並べる必要がある場合は、明示的に「DESC」を使用する必要があります。
構文
構文SELECT column-listは次のとおりです。
例
MySQLにEMPLOYEESという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して4つのレコードを挿入した場合-
次の文は、年齢の昇順でEMPLOYEE表の内容を取得します。
また、DESCを使用して降順でデータを取得できます-
Pythonを使用したORDER BY句
テーブルの内容を特定の順序で取得するには、カーソルオブジェクトで* execute()*メソッドを呼び出し、パラメータとしてORDER BY句とともにSELECTステートメントを渡します。
例
次の例では、ORDER BY句を使用して、名前とEmployeeを使用してテーブルを作成し、それを設定し、年齢の(昇順)のレコードを取得します。
出力
同様に、ORDER BY句を使用して、降順でテーブルからデータを取得できます。
例
出力
Python MySQL-テーブルの更新
データベースでのUPDATE操作は、データベースですでに使用可能な1つ以上のレコードを更新します。 UPDATEステートメントを使用して、MySQLの既存のレコードの値を更新できます。 特定の行を更新するには、それと共にWHERE句を使用する必要があります。
構文
以下は、MySQLのUPDATEステートメントの構文です-
ANDまたはOR演算子を使用して、N個の条件を組み合わせることができます。
例
MySQLにEMPLOYEESという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して4つのレコードを挿入した場合-
MySQLの声明に従うと、すべての男性従業員の年齢が1年増加します-
テーブルの内容を取得すると、更新された値を次のように表示できます-
Pythonを使用してテーブルの内容を更新する
Pythonを使用してMySQLのテーブルのレコードを更新するには-
- mysql.connector パッケージをインポートします。
- mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
- 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、UPDATEステートメントをパラメーターとして* execute()*メソッドに渡して実行します。
例
次の例は、すべての男性の年齢を1年増やします。
出力
Python MySQL-データの削除
MySQLテーブルからレコードを削除するには、 DELETE FROM ステートメントを使用する必要があります。 特定のレコードを削除するには、それと共にWHERE句を使用する必要があります。
構文
MYSQLのDELETEクエリの構文は次のとおりです-
例
MySQLにEMPLOYEESという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して4つのレコードを挿入した場合-
次のMySQLステートメントは、FIRST_NAME「Mac」を持つ従業員のレコードを削除します。
テーブルの内容を取得すると、1つのレコードが削除されているため、3つのレコードしか表示できません。
WHERE句なしでDELETEステートメントを実行すると、指定されたテーブルのすべてのレコードが削除されます。
あなたがテーブルの内容を取得する場合、以下に示すように空のセットを取得します-
Pythonを使用してテーブルのレコードを削除する
データベースから一部のレコードを削除する場合は、DELETE操作が必要です。
テーブル内のレコードを削除するには-
- mysql.connector パッケージをインポートします。
- mysql.connector.connect() メソッドを使用して、ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、接続オブジェクトを作成します。
- 上記で作成した接続オブジェクトで cursor() メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、 _ DELETE_ ステートメントをパラメーターとして* execute()*メソッドに渡して実行します。
例
次のプログラムは、年齢が20を超えるEMPLOYEEからすべてのレコードを削除します-
出力
Python MySQL-ドロップテーブル
構文
以下は、MySQLのDROP TABLEステートメントの構文です-
例
テーブルを削除する前に、次のようにSHOW TABLESステートメントを使用してテーブルのリストを取得します-
次のステートメントは、sampleという名前のテーブルをデータベースから完全に削除します-
MySQLからsampleという名前のテーブルを削除したため、テーブルのリストを再度取得しても、テーブル名のサンプルは見つかりません。
Pythonを使用してテーブルを削除する
MYSQLのDROPステートメントを使用して、必要なときにいつでもテーブルを削除できますが、既存のテーブルを削除するときは、テーブルの削除後に失われたデータが復元されないため、非常に注意する必要があります。
Pythonを使用してMYSQLデータベースからテーブルを削除するには、カーソルオブジェクトで* execute()*メソッドを呼び出し、dropステートメントをパラメーターとして渡します。
例
次のテーブルは、データベースからEMPLOYEEという名前のテーブルを削除します。
出力
存在する場合にのみテーブルを削除する
データベースに存在しないテーブルを削除しようとすると、エラーが発生します-
削除ステートメントにIF EXISTSを追加して、削除する前にテーブルが存在するかどうかを確認することにより、このエラーを防ぐことができます。
出力
Python MySQL-制限
特定の数でレコードを制限する場合は、MYSQLのLIMIT句を使用してレコードをフェッチできます。
例
MySQLにEMPLOYEESという名前のテーブルを作成したとします-
そして、INSERTステートメントを使用して4つのレコードを挿入した場合-
次のSQLステートメントは、LIMIT句を使用してEmployeeテーブルの最初の2つのレコードを取得します。
Pythonを使用した制限句
SELECTクエリとLIMIT句を渡すことにより、カーソルオブジェクトで* execute()*メソッドを呼び出すと、必要な数のレコードを取得できます。
Pythonを使用してMYSQLデータベースからテーブルを削除するには、カーソルオブジェクトで* execute()*メソッドを呼び出し、dropステートメントをパラメーターとして渡します。
例
次のpythonの例では、EMPLOYEEという名前のテーブルを作成してデータを設定し、LIMIT句を使用して最初の2つのレコードをフェッチします。
出力
オフセット付きの制限
n番目のレコード(1 ^ st ^ではない)から始まるレコードを制限する必要がある場合は、LIMITとともにOFFSETを使用して制限できます。
出力
Python MySQL-参加
データを2つのテーブルに分割したら、結合を使用してこれらの2つのテーブルから結合レコードをフェッチできます。
例
以下に示すように、EMPLOYEEという名前のテーブルを作成し、そこにデータを入力したとします-
次に、別のテーブルを作成し、次のように入力した場合-
次のステートメントは、これら2つのテーブルの値を組み合わせたデータを取得します-
Pythonを使用したMYSQL JOIN
次の例では、EMPLOYEEテーブルのcontact列とCONTACTテーブルのID列で結合された上記の2つのテーブルからデータを取得します。
出力
Python MySQL-カーソルオブジェクト
mysql-connector-python(および同様のライブラリ)のMySQLCursorは、MySQLデータベースと通信するステートメントを実行するために使用されます。
そのメソッドを使用して、SQLステートメントを実行し、結果セットからデータをフェッチし、プロシージャを呼び出すことができます。
Connectionオブジェクト/クラスのcursor()メソッドを使用して Cursor オブジェクトを作成できます。
例
方法
以下は、Cursorクラス/オブジェクトによって提供されるさまざまなメソッドです。
Sr.No | Method & Description |
---|---|
1 |
callproc() このメソッドは、既存のプロシージャMySQLデータベースを呼び出すために使用されます。 |
2 |
close() このメソッドは、現在のカーソルオブジェクトを閉じるために使用されます。 |
3 |
Info() このメソッドは、最後のクエリに関する情報を提供します。 |
4 |
executemany() このメソッドは、一連のパラメーターリストを受け入れます。 MySQLクエリを準備し、すべてのパラメーターを使用して実行します。 |
5 |
execute() このメソッドは、MySQLクエリをパラメーターとして受け取り、指定されたクエリを実行します。 |
6 |
fetchall() このメソッドは、クエリの結果セット内のすべての行を取得し、それらをタプルのリストとして返します。 (いくつかの行を取得した後にこれを実行すると、残りの行が返されます) |
7 |
fetchone() このメソッドは、クエリの結果の次の行をフェッチし、タプルとして返します。 |
8 |
fetchmany() このメソッドはfetchone()に似ていますが、単一の行ではなく、クエリの結果セット内の次の行セットを取得します。 |
9 |
etchwarnings() このメソッドは、最後に実行されたクエリによって生成された警告を返します。 |
プロパティ
以下は、カーソルクラスのプロパティです-
Sr.No | Property & Description |
---|---|
1 |
column_names これは、結果セットの列名を含むリストを返す読み取り専用プロパティです。 |
2 |
description これは、結果セットの列の説明を含むリストを返す読み取り専用プロパティです。 |
3 |
lastrowid これは読み取り専用のプロパティです。テーブルに自動インクリメントされた列がある場合、最後のINSERTまたはUPDATE操作でその列に対して生成された値を返します。 |
4 |
rowcount これは、SELECTおよびUPDATE操作の場合に返される/更新される行の数を返します。 |
5 |
statement このプロパティは、最後に実行されたステートメントを返します。 |
Python PostgreSQL-はじめに
インストール
PostgreSQLは、強力なオープンソースのオブジェクトリレーショナルデータベースシステムです。 15年以上の活発な開発フェーズと、信頼性、データの整合性、正確性で高い評価を得ている実績のあるアーキテクチャを備えています。
Pythonを使用してPostgreSQLと通信するには、pythonプログラミング用に提供されているアダプターであるpsycopgをインストールする必要があります。現在のバージョンは psycog2 です。
psycopg2は、非常に小さく高速で、岩のように安定することを目的に書かれています。 PIP(pythonのパッケージマネージャー)で利用可能
PIPを使用したPsycog2のインストール
まず、システムにpythonとPIPが適切にインストールされていること、およびPIPが最新であることを確認してください。
PIPをアップグレードするには、コマンドプロンプトを開き、次のコマンドを実行します-
次に、管理モードでコマンドプロンプトを開き、以下に示すように pip install psycopg2-binary コマンドを実行します-
検証
インストールを確認するには、次の行を含むサンプルPythonスクリプトを作成します。
インストールが成功した場合、それを実行すると、エラーが発生しないはずです-
Python PostgreSQL-データベース接続
PostgreSQLはクエリを実行する独自のシェルを提供します。 PostgreSQLデータベースとの接続を確立するには、システムに適切にインストールされていることを確認してください。 PostgreSQLシェルプロンプトを開き、サーバー、データベース、ユーザー名、パスワードなどの詳細を渡します。 指定した詳細がすべて適切な場合、PostgreSQLデータベースとの接続が確立されます。
詳細を渡す際に、デフォルトのサーバー、データベース、ポート、およびシェルによって提案されたユーザー名を使用できます。
Pythonを使用して接続を確立する
例
次のPythonコードは、既存のデータベースに接続する方法を示しています。 データベースが存在しない場合は、データベースが作成され、最終的にデータベースオブジェクトが返されます。 PostgreSQLのデフォルトデータベースの名前は_postrgre_です。 したがって、データベース名として提供しています。
出力
Python PostgreSQL-データベースの作成
CREATE DATABASEステートメントを使用して、PostgreSQLにデータベースを作成できます。 コマンドの後に作成されるデータベースの名前を指定することにより、PostgreSQLシェルプロンプトでこのステートメントを実行できます。
構文
以下は、CREATE DATABASEステートメントの構文です。
例
次の文は、PostgreSQLにtestdbという名前のデータベースを作成します。
\ lコマンドを使用して、PostgreSQLのデータベースを一覧表示できます。 データベースのリストを確認すると、次のように新しく作成されたデータベースを見つけることができます-
SQLステートメントCREATE DATABASEのラッパーである_createdb_コマンドを使用して、コマンドプロンプトからPostgreSQLにデータベースを作成することもできます。
Pythonを使用してデータベースを作成する
psycopg2のカーソルクラスは、さまざまなPostgreSQLコマンドを実行し、レコードを取得してデータをコピーするさまざまなメソッドを提供します。 Connectionクラスのcursor()メソッドを使用して、カーソルオブジェクトを作成できます。
このクラスのexecute()メソッドは、PostgreSQLクエリをパラメーターとして受け取り、実行します。
したがって、PostgreSQLでデータベースを作成するには、このメソッドを使用してCREATE DATABASEクエリを実行します。
例
次のpythonの例は、PostgreSQLデータベースにmydbという名前のデータベースを作成します。
出力
Python PostgreSQL-テーブルの作成
CREATE TABLEステートメントを使用して、PostgreSQLのデータベースに新しいテーブルを作成できます。 これを実行する際、テーブルの名前、列名、およびそれらのデータ型を指定する必要があります。
構文
以下は、PostgreSQLのCREATE TABLEステートメントの構文です。
例
次の例は、PostgreSQLでCRICKETERSという名前のテーブルを作成します。
\ dtコマンドを使用して、PostgreSQLのデータベース内のテーブルのリストを取得できます。 テーブルを作成した後、テーブルのリストを確認できる場合、次のように新しく作成されたテーブルを観察できます-
同様に、以下に示すように\ dを使用して作成されたテーブルの説明を取得することができます-
Pythonを使用してテーブルを作成する
pythonを使用してテーブルを作成するには、_pyscopg2_のCursorのexecute()メソッドを使用してCREATE TABLEステートメントを実行する必要があります。
例
次のPythonの例は、employeeという名前のテーブルを作成します。
出力
Python PostgreSQL-データの挿入
構文
INSERTステートメントの推奨構文は次のとおりです-
ここで、column1、column2、column3、.. テーブルの列の名前、およびvalue1、value2、value3、… テーブルに挿入する必要がある値です。
例
以下に示すように、CREATE TABLEステートメントを使用してCRICKETERSという名前のテーブルを作成したとします-
次のPostgreSQLステートメントは、上記で作成したテーブルに行を挿入します-
_INSERT INTO_ステートメントを使用してレコードを挿入するときに、列名をスキップすると、スキップした列に空のスペースを残してレコードが挿入されます。
渡す値の順序がテーブル内のそれぞれの列名と同じ場合、列名を指定せずにテーブルにレコードを挿入することもできます。
レコードをテーブルに挿入した後、以下に示すようにSELECTステートメントを使用してその内容を確認できます-
Pythonを使用してデータを挿入する
psycopg2のカーソルクラスは、execute()メソッドという名前のメソッドを提供します。 このメソッドは、クエリをパラメーターとして受け取り、実行します。
したがって、Pythonを使用してPostgreSQLのテーブルにデータを挿入するには-
- psycopg2 パッケージをインポートします。
- ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、 _ connect()_ メソッドを使用して接続オブジェクトを作成します。
- 属性 autocommit の値としてfalseを設定して、自動コミットモードをオフにします。
- psycopg2ライブラリの Connection クラスの* cursor()*メソッドは、カーソルオブジェクトを返します。 このメソッドを使用してカーソルオブジェクトを作成します。
- 次に、INSERT文をパラメータとしてexecute()メソッドに渡すことにより、INSERT文を実行します。
例
次のPythonプログラムは、PostgreSQLデータベースにEMPLOYEEという名前のテーブルを作成し、execute()メソッドを使用してレコードを挿入します-
出力
Python PostgreSQL-データの選択
SELECTステートメントを使用して、PostgreSQLの既存のテーブルの内容を取得できます。 このステートメントでは、テーブルの名前を指定する必要があり、結果セットとして知られる表形式でコンテンツを返します。
構文
以下は、PostgreSQLのSELECTステートメントの構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTクエリは、列FIRST_NAME、LAST_NAME、およびCOUNTRYの値をCRICKETERSテーブルから取得します。
あなたが各レコードのすべての列を取得したい場合は、以下に示すように、列の名前を「*」に置き換える必要があります-
Pythonを使用してデータを取得する
任意のデータベースに対するREAD操作は、データベースからいくつかの有用な情報を取得することを意味します。 psycopg2が提供するfetch()メソッドを使用して、PostgreSQLからデータをフェッチできます。
Cursorクラスは、3つのメソッド、つまりfetchall()、fetchmany()、およびfetchone()を提供します。ここで、
- fetchall()メソッドは、クエリの結果セット内のすべての行を取得し、それらをタプルのリストとして返します。 (いくつかの行を取得した後にこれを実行すると、残りの行が返されます)。
- fetchone()メソッドは、クエリの結果の次の行を取得し、タプルとして返します。
- fetchmany()メソッドはfetchone()に似ていますが、単一の行ではなく、クエリの結果セット内の次の行セットを取得します。
注意-結果セットは、カーソルオブジェクトを使用してテーブルを照会するときに返されるオブジェクトです。
例
次のPythonプログラムは、PostgreSQLのmydbという名前のデータベースに接続し、EMPLOYEEという名前のテーブルからすべてのレコードを取得します。
出力
Python PostgreSQL-Where句
SELECT、UPDATE、またはDELETE操作の実行中に、WHERE句を使用してレコードをフィルターする条件を指定できます。 操作は、指定された条件を満たすレコードに対して実行されます。
構文
PostgreSQLのWHERE句の構文は次のとおりです-
比較演算子または論理演算子を使用してsearch_conditionを指定できます。 >、<、=、LIKE、NOTなど。 次の例は、この概念を明確にします。
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTステートメントは、年齢が35歳以上のレコードを取得します-
Pythonを使用したWhere節
pythonプログラムを使用してテーブルから特定のレコードを取得するには、WHERE句を指定したSELECTステートメントをパラメーターとして実行し、* execute()*メソッドに渡します。
例
次のpythonの例は、pythonを使用したWHEREコマンドの使用方法を示しています。
出力
Python PostgreSQL-注文者
通常、テーブルからデータを取得しようとすると、挿入した順序と同じ順序でレコードが取得されます。
構文
以下は、PostgreSQLのORDER BY句の構文です。
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTステートメントは、年齢の昇順でCRICKETERSテーブルの行を取得します-
複数の列を使用して、テーブルのレコードをソートできます。 次のSELECTステートメントは、列ageおよびFIRST_NAMEに基づいてCRICKETERSテーブルのレコードをソートします。
デフォルトでは、 ORDER BY 句はテーブルのレコードを昇順でソートします。 次のようにDESCを使用して、結果を降順に並べることができます-
Pythonを使用したORDER BY句
テーブルの内容を特定の順序で取得するには、カーソルオブジェクトでexecute()メソッドを呼び出し、パラメータとしてORDER BY句とともにSELECTステートメントを渡します。
例
次の例では、ORDER BY句を使用して、名前とEmployeeを使用してテーブルを作成し、それを設定し、そのレコードを年齢の(昇順)順序で取得します。
出力
Python PostgreSQL-更新テーブル
UPDATEステートメントを使用して、PostgreSQLのテーブルの既存のレコードの内容を変更できます。 特定の行を更新するには、それと共にWHERE句を使用する必要があります。
構文
PostgreSQLのUPDATEステートメントの構文は次のとおりです-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のステートメントは、クリケット選手の年齢を変更します。その名は Shikhar です-
FIRST_NAMEがShikharであるレコードを取得すると、年齢の値が45に変更されていることがわかります-
WHERE句を使用していない場合、すべてのレコードの値が更新されます。 UPDATEステートメントを実行すると、CRICKETERSテーブル内のすべてのレコードの経過時間が1ずつ増加します-
SELECTコマンドを使用してテーブルの内容を取得する場合、更新された値を次のように表示できます-
Pythonを使用してレコードを更新する
psycopg2のカーソルクラスは、execute()メソッドという名前のメソッドを提供します。 このメソッドは、クエリをパラメーターとして受け取り、実行します。
したがって、Pythonを使用してPostgreSQLのテーブルにデータを挿入するには-
- psycopg2 パッケージをインポートします。
- ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、 _ connect()_ メソッドを使用して接続オブジェクトを作成します。
- 属性 autocommit の値としてfalseを設定して、自動コミットモードをオフにします。
- psycopg2ライブラリの Connection クラスの* cursor()*メソッドは、カーソルオブジェクトを返します。 このメソッドを使用してカーソルオブジェクトを作成します。 *次に、UPDATEステートメントをパラメーターとしてexecute()メソッドに渡して実行します。
例
次のPythonコードは、Employeeテーブルの内容を更新し、結果を取得します-
出力
Python PostgreSQL-データの削除
PostgreSQLデータベースの DELETE FROM ステートメントを使用して、既存のテーブルのレコードを削除できます。 特定のレコードを削除するには、それと共にWHERE句を使用する必要があります。
構文
PostgreSQLのDELETEクエリの構文は次のとおりです-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次の文は、姓が「Sangakkara」であるクリケット選手のレコードを削除します。 −
SELECTステートメントを使用してテーブルの内容を取得すると、1つのレコードが削除されているため、4つのレコードしか表示できません。
WHERE句なしでDELETE FROMステートメントを実行すると、指定されたテーブルのすべてのレコードが削除されます。
すべてのレコードを削除しているため、SELECTステートメントを使用してCRICKETERSテーブルの内容を取得しようとすると、以下に示すように空の結果セットが得られます-
Pythonを使用してデータを削除する
psycopg2のカーソルクラスは、execute()メソッドという名前のメソッドを提供します。 このメソッドは、クエリをパラメーターとして受け取り、実行します。
したがって、Pythonを使用してPostgreSQLのテーブルにデータを挿入するには-
- psycopg2 パッケージをインポートします。
- ユーザー名、パスワード、ホスト(オプションのデフォルト:localhost)、およびデータベース(オプション)をパラメーターとして渡すことにより、 _ connect()_ メソッドを使用して接続オブジェクトを作成します。
- 属性 autocommit の値としてfalseを設定して、自動コミットモードをオフにします。
- psycopg2ライブラリのConnectionクラスの* cursor()*メソッドは、カーソルオブジェクトを返します。 このメソッドを使用してカーソルオブジェクトを作成します。 *次に、UPDATEステートメントをパラメーターとしてexecute()メソッドに渡して実行します。
例
次のPythonコードは、年齢値が25を超えるEMPLOYEEテーブルのレコードを削除します-
出力
Python PostgreSQL-ドロップテーブル
DROP TABLEステートメントを使用して、PostgreSQLデータベースからテーブルを削除できます。
構文
以下は、PostgreSQLのDROP TABLEステートメントの構文です-
例
次のクエリを使用して、名前がCRICKETERSとEMPLOYEESの2つのテーブルを作成したとします-
「\ dt」コマンドを使用してテーブルのリストを確認すると、上記で作成したテーブルを次のように表示できます-
次の文は、データベースからEmployeeという名前のテーブルを削除します-
Employeeテーブルを削除したため、テーブルのリストを再度取得すると、その中の1つのテーブルのみを観察できます。
既に削除しているため、再びEmployeeテーブルを削除しようとすると、次のように「テーブルが存在しません」というエラーが表示されます-
これを解決するには、DELTEステートメントと一緒にIF EXISTS句を使用できます。 これにより、テーブルが存在する場合は削除され、存在しない場合はDLETE操作がスキップされます。
Pythonを使用してテーブル全体を削除する
DROPステートメントを使用して、必要なときにいつでもテーブルを削除できます。 ただし、既存のテーブルを削除するときは、テーブルを削除した後に失われたデータが復元されないため、非常に注意する必要があります。
出力
Python PostgreSQL-制限
PostgreSQL SELECTステートメントの実行中に、LIMIT句を使用して、結果のレコード数を制限できます。
構文
以下はPostgreSQLのLMIT句の構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のステートメントは、LIMIT句を使用してCricketersテーブルの最初の3つのレコードを取得します-
特定のレコード(オフセット)から始まるレコードを取得したい場合は、LIMITとともにOFFSET句を使用して取得できます。
Pythonを使用した制限句
次のPythonの例では、EMPLOYEEという名前のテーブルの内容を取得し、結果のレコード数を2に制限します-
例
出力
Python PostgreSQL-参加
データを2つのテーブルに分割したら、結合を使用してこれらの2つのテーブルから結合レコードをフェッチできます。
例
CRICKETERSという名前のテーブルを作成し、以下に示すように5つのレコードを挿入したとします-
そして、OdiStatsという名前で別のテーブルを作成し、5つのレコードを挿入した場合-
次のステートメントは、これら2つのテーブルの値を組み合わせたデータを取得します-
Pythonを使用して参加する
データを2つのテーブルに分割したら、結合を使用してこれらの2つのテーブルから結合レコードをフェッチできます。
例
次のPythonプログラムは、JOIN句の使用方法を示しています-
出力
Python PostgreSQL-カーソルオブジェクト
_psycopg_ライブラリのCursorクラスは、Pythonコードを使用してデータベースでPostgreSQLコマンドを実行するメソッドを提供します。
そのメソッドを使用して、SQLステートメントを実行し、結果セットからデータをフェッチし、プロシージャを呼び出すことができます。
Connectionオブジェクト/クラスのcursor()メソッドを使用して Cursor オブジェクトを作成できます。
例
方法
以下は、Cursorクラス/オブジェクトによって提供されるさまざまなメソッドです。
Sr.No | Method & Description |
---|---|
1 |
callproc() このメソッドは、PostgreSQLデータベースの既存のプロシージャを呼び出すために使用されます。 |
2 |
close() このメソッドは、現在のカーソルオブジェクトを閉じるために使用されます。 |
3 |
executemany() このメソッドは、一連のパラメーターリストを受け入れます。 MySQLクエリを準備し、すべてのパラメーターを使用して実行します。 |
4 |
execute() このメソッドは、MySQLクエリをパラメーターとして受け取り、指定されたクエリを実行します。 |
5 |
fetchall() このメソッドは、クエリの結果セット内のすべての行を取得し、それらをタプルのリストとして返します。 (いくつかの行を取得した後にこれを実行すると、残りの行が返されます) |
6 |
fetchone() このメソッドは、クエリの結果の次の行をフェッチし、タプルとして返します。 |
7 |
fetchmany() このメソッドはfetchone()に似ていますが、単一の行ではなく、クエリの結果セット内の次の行セットを取得します。 |
プロパティ
以下は、カーソルクラスのプロパティです-
Sr.No | Property & Description |
---|---|
1 |
description これは、結果セットの列の説明を含むリストを返す読み取り専用プロパティです。 |
2 |
astrowid これは読み取り専用のプロパティです。テーブルに自動インクリメントされた列がある場合、最後のINSERTまたはUPDATE操作でその列に対して生成された値を返します。 |
3 |
rowcount これは、SELECTおよびUPDATE操作の場合に返される/更新される行の数を返します。 |
4 |
closed このプロパティは、カーソルが閉じているかどうかを指定します。閉じている場合はtrue、そうでない場合はfalseを返します。 |
5 |
connection これは、このカーソルが作成された接続オブジェクトへの参照を返します。 |
6 |
name このプロパティは、カーソルの名前を返します。 |
7 |
scrollable このプロパティは、特定のカーソルがスクロール可能かどうかを指定します。 |
Python SQLite-はじめに
インストール
SQLite3は、Gerhard Haringによって作成されたsqlite3モジュールを使用してPythonと統合できます。 PEP 249で説明されているDB-API 2.0仕様に準拠したSQLインターフェイスを提供します。 このモジュールはPythonバージョン2.5.x以降でデフォルトで出荷されるため、このモジュールを個別にインストールする必要はありません。
sqlite3モジュールを使用するには、最初にデータベースを表す接続オブジェクトを作成する必要があります。次に、オプションでカーソルオブジェクトを作成できます。これは、すべてのSQLステートメントの実行に役立ちます。
Python sqlite3モジュールAPI
以下は重要なsqlite3モジュールルーチンであり、PythonプログラムからSQLiteデータベースを操作するための要件を満たすことができます。 より洗練されたアプリケーションをお探しの場合は、Python sqlite3モジュールの公式ドキュメントをご覧ください。
Sr.No. | API & Description |
---|---|
1 |
sqlite3.connect(database [,timeout ,other optional arguments]) このAPIは、SQLiteデータベースファイルへの接続を開きます。 ":memory:"を使用して、ディスクではなくRAMにあるデータベースへのデータベース接続を開くことができます。 データベースが正常に開くと、接続オブジェクトが返されます。 |
2 |
connection.cursor([cursorClass]) このルーチンは、Pythonを使用したデータベースプログラミング全体で使用される*カーソル*を作成します。 このメソッドは、単一のオプションパラメータcursorClassを受け入れます。 指定する場合、これはsqlite3.Cursorを拡張するカスタムカーソルクラスである必要があります。 |
3 |
cursor.execute(sql [, optional parameters]) このルーチンは、SQLステートメントを実行します。 SQLステートメントはパラメーター化できます(i。 e. SQLリテラルの代わりのプレースホルダー)。 sqlite3モジュールは、疑問符と名前付きプレースホルダー(名前付きスタイル)の2種類のプレースホルダーをサポートしています。 たとえば-cursor.execute( "insert into people values(?、?)"、(who、age)) |
4 |
connection.execute(sql [, optional parameters]) このルーチンは、カーソルオブジェクトによって提供される上記のexecuteメソッドのショートカットであり、cursorメソッドを呼び出して中間カーソルオブジェクトを作成し、指定されたパラメーターでカーソルのexecuteメソッドを呼び出します。 |
5 |
cursor.executemany(sql, seq_of_parameters) このルーチンは、シーケンスsqlで見つかったすべてのパラメーターシーケンスまたはマッピングに対してSQLコマンドを実行します。 |
6 |
connection.executemany(sql[, parameters]) このルーチンは、cursorメソッドを呼び出して中間カーソルオブジェクトを作成し、指定されたパラメーターでcursor.s executemanyメソッドを呼び出すショートカットです。 |
7 |
cursor.executescript(sql_script) このルーチンは、スクリプトの形式で提供される複数のSQLステートメントを一度に実行します。 最初にCOMMITステートメントを発行し、次にパラメーターとして取得したSQLスクリプトを実行します。 すべてのSQLステートメントはセミコロン(;)で区切る必要があります。 |
8 |
connection.executescript(sql_script) このルーチンは、カーソルメソッドを呼び出して中間カーソルオブジェクトを作成し、指定されたパラメーターを使用してカーソルのexecutescriptメソッドを呼び出すショートカットです。 |
9 |
connection.total_changes() このルーチンは、データベース接続が開かれてから変更、挿入、または削除されたデータベース行の総数を返します。 |
10 |
connection.commit() このメソッドは、現在のトランザクションをコミットします。 このメソッドを呼び出さないと、最後のcommit()の呼び出し以降に行った操作は、他のデータベース接続からは見えません。 |
11 |
connection.rollback() このメソッドは、commit()の最後の呼び出し以降のデータベースへの変更をロールバックします。 |
12 |
connection.close() このメソッドは、データベース接続を閉じます。 これはcommit()を自動的に呼び出さないことに注意してください。 最初にcommit()を呼び出さずにデータベース接続を閉じると、変更は失われます! |
13 |
cursor.fetchone() このメソッドは、クエリ結果セットの次の行をフェッチして単一のシーケンスを返します。使用可能なデータがなくなったらNoneを返します。 |
14 |
cursor.fetchmany([size = cursor.arraysize]) このルーチンは、クエリ結果の次の行セットをフェッチし、リストを返します。 使用可能な行がなくなると、空のリストが返されます。 このメソッドは、sizeパラメーターで指定された数の行をフェッチしようとします。 |
15 |
cursor.fetchall() このルーチンは、クエリ結果のすべての(残りの)行をフェッチし、リストを返します。 使用可能な行がない場合、空のリストが返されます。 |
Python SQLite-接続の確立
SQLite Openコマンドプロンプトとの接続を確立するには、SQLiteをインストールした場所を参照し、次のようにコマンド sqlite3 を実行します-
Pythonを使用して接続を確立する
SQLite3 pythonモジュールを使用して、SQLite2データベースと通信できます。 そのためには、まず接続を確立する(接続オブジェクトを作成する)必要があります。
Pythonを使用してSQLite3データベースとの接続を確立するには、以下を行う必要があります-
- importステートメントを使用してsqlite3モジュールをインポートします。
- connect()メソッドは、接続する必要があるデータベースの名前をパラメーターとして受け入れ、Connectionオブジェクトを返します。
例
出力
Python SQLite-テーブルの作成
SQLite CREATE TABLEステートメントを使用して、データベースにテーブルを作成できます。
構文
以下は、SQLiteデータベースにテーブルを作成するための構文です-
例
次のSQLiteクエリ/ステートメントは、SQLiteデータベースに CRICKETERS という名前のテーブルを作成します-
CRICKETERSテーブルの各プレーヤーの1日のクリケット統計を記述するOdiStatsテーブルをもう1つ作成します。
Pythonを使用してテーブルを作成する
Cursorオブジェクトには、要求を実行し、データなどを取得するためのすべてのメソッドが含まれています。 接続クラスのカーソルメソッドは、カーソルオブジェクトを返します。
したがって、Pythonを使用してSQLiteデータベースにテーブルを作成するには-
- connect()メソッドを使用して、データベースとの接続を確立します。
- 上記で作成した接続オブジェクトでcursor()メソッドを呼び出して、カーソルオブジェクトを作成します。
- 次に、Cursorクラスのexecute()メソッドを使用してCREATE TABLEステートメントを実行します。
例
次のPythonプログラムは、SQLite3でEmployeeという名前のテーブルを作成します-
出力
Python SQLite-データの挿入
INSERT INTOステートメントを使用して、SQLiteの既存のテーブルに新しい行を追加できます。 この場合、テーブルの名前、列名、および値を(列名と同じ順序で)指定する必要があります。
構文
INSERTステートメントの推奨構文は次のとおりです-
ここで、column1、column2、column3、.. テーブルの列の名前とvalue1、value2、value3、… テーブルに挿入する必要がある値です。
例
以下に示すように、CREATE TABLEステートメントを使用してCRICKETERSという名前のテーブルを作成したとします-
次のPostgreSQLステートメントは、上記で作成されたテーブルに行を挿入します。
INSERT INTOステートメントを使用してレコードを挿入するときに、列名をスキップすると、このレコードが挿入され、スキップした列に空のスペースが残ります。
渡す値の順序がテーブル内のそれぞれの列名と同じ場合、列名を指定せずにテーブルにレコードを挿入することもできます。
レコードをテーブルに挿入した後、以下に示すようにSELECTステートメントを使用してその内容を確認できます-
Pythonを使用してデータを挿入する
SQLiteデータベースの既存のテーブルにレコードを追加するには-
- sqlite3パッケージをインポートします。
- データベースの名前をパラメーターとして渡すことにより、connect()メソッドを使用して接続オブジェクトを作成します。
- cursor() メソッドは、SQLite3と通信できるカーソルオブジェクトを返します。 (作成済みの)Connectionオブジェクトでcursor()オブジェクトを呼び出して、カーソルオブジェクトを作成します。
- 次に、INSERTステートメントをパラメーターとして渡すことにより、カーソルオブジェクトでexecute()メソッドを呼び出します。
例
次のPythonの例では、EMPLOYEEという名前のテーブルにレコードを挿入します-
出力
Python SQLite-データの選択
SELCTクエリを使用して、SQLiteテーブルからデータを取得できます。 このクエリ/ステートメントは、指定された関係(テーブル)の内容を表形式で返し、結果セットとして呼び出されます。
構文
以下は、SQLiteのSELECTステートメントの構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTクエリは、列FIRST_NAME、LAST_NAME、およびCOUNTRYの値をCRICKETERSテーブルから取得します。
ご覧のとおり、SQLiteデータベースのSELECTステートメントは、指定されたテーブルのレコードを返すだけです。 フォーマットされた出力を取得するには、以下に示すように、SELECT文の前にそれぞれのコマンドを使用して header および mode を設定する必要があります-
あなたが各レコードのすべての列を取得したい場合は、以下に示すように、列の名前を「*」に置き換える必要があります-
SQLite_では、列の幅はデフォルトで10で、この幅を超える値は切り取られます(上記の表の2 ^ nd ^行の国列に注目してください)。 以下に示すように、テーブルの内容を取得する前に、 '。width_ コマンドを使用して、各列の幅を必要な値に設定できます-
Pythonを使用してデータを取得する
任意のデータベースに対するREAD操作は、データベースからいくつかの有用な情報を取得することを意味します。 sqlite pythonモジュールが提供するfetch()メソッドを使用して、MYSQLからデータをフェッチできます。
sqlite3.Cursorクラスは、3つのメソッド、すなわちfetchall()、fetchmany()、およびfetchone()を提供します。ここで、
- fetchall()メソッドは、クエリの結果セット内のすべての行を取得し、それらをタプルのリストとして返します。 (いくつかの行を取得した後にこれを実行すると、残りの行が返されます)。
- fetchone()メソッドは、クエリの結果の次の行を取得し、タプルとして返します。
- fetchmany()メソッドはfetchone()に似ていますが、単一の行ではなく、クエリの結果セット内の次の行セットを取得します。
注意-結果セットは、カーソルオブジェクトを使用してテーブルを照会するときに返されるオブジェクトです。
例
次の例では、SELECTクエリを使用してEMPLOYEEテーブルのすべての行をフェッチし、最初に取得した結果セットから、fetchone()メソッドを使用して最初の行を取得してから、fetchall()メソッドを使用して残りの行をフェッチしています。
次のPythonプログラムは、上記の例で作成されたCOMPANYテーブルからレコードを取得して表示する方法を示しています。
出力
Python SQLite-Where句
SQLiteでテーブルの特定の行をフェッチ、削除、または更新する場合は、where句を使用して条件を指定し、操作のためにテーブルの行をフィルタリングする必要があります。
たとえば、where句を含むSELECTステートメントがある場合、指定された条件を満たす行のみが取得されます。
構文
以下は、SQLiteのWHERE句の構文です-
比較演算子または論理演算子を使用してsearch_conditionを指定できます。 >、<、=、LIKE、NOTなど。 次の例は、この概念を明確にします。
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTステートメントは、年齢が35歳以上のレコードを取得します-
Pythonを使用したWhere節
Cursorオブジェクト/クラスには、クエリを実行したりデータをフェッチしたりするためのすべてのメソッドが含まれています。 接続クラスのカーソルメソッドは、カーソルオブジェクトを返します。
したがって、Pythonを使用してSQLiteデータベースにテーブルを作成するには-
- connect()メソッドを使用して、データベースとの接続を確立します。
- 上記で作成した接続オブジェクトでcursor()メソッドを呼び出して、カーソルオブジェクトを作成します。 *次に、Cursorクラスのexecute()メソッドを使用してCREATE TABLEステートメントを実行します。
例
次の例では、Employeeという名前のテーブルを作成し、それを設定します。 次に、where句を使用して、年齢値が23未満のレコードを取得します。
出力
Python SQLite-注文者
SELECTクエリを使用してデータをフェッチしている間、挿入したのと同じ順序でレコードを取得します。
構文
以下は、SQLiteのORDER BY句の構文です。
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のSELECTステートメントは、年齢の昇順でCRICKETERSテーブルの行を取得します-
複数の列を使用して、テーブルのレコードをソートできます。 次のSELECTステートメントは、列_AGE_および_FIRST_NAME_に基づいてCRICKETERSテーブルのレコードをソートします。
デフォルトでは、 ORDER BY 句はテーブルのレコードを昇順でソートします。DESCを使用して結果を降順で並べることができます-
Pythonを使用したORDER BY句
テーブルの内容を特定の順序で取得するには、カーソルオブジェクトでexecute()メソッドを呼び出し、パラメータとしてORDER BY句とともにSELECTステートメントを渡します。
例
次の例では、ORDER BY句を使用して、名前とEmployeeを使用してテーブルを作成し、それを設定し、年齢の(昇順)のレコードを取得します。
出力
Python SQLite-テーブルの更新
データベースでのUPDATE操作は、データベースですでに使用可能なテーブルの1つ以上のレコードの値を変更することを意味します。 UPDATEステートメントを使用して、SQLiteの既存のレコードの値を更新できます。
特定の行を更新するには、それと共にWHERE句を使用する必要があります。
構文
以下は、SQLiteのUPDATEステートメントの構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のステートメントは、クリケット選手の年齢を変更します。ファーストネームは Shikhar です-
FIRST_NAMEがShikharであるレコードを取得すると、年齢の値が45に変更されていることがわかります-
使用していない場合は、すべてのレコードのWHERE句の値が更新されます。 UPDATEステートメントを実行すると、CRICKETERSテーブル内のすべてのレコードの経過時間が1ずつ増加します-
SELECTコマンドを使用してテーブルの内容を取得する場合、更新された値を次のように表示できます-
Pythonを使用して既存のレコードを更新する
SQLiteデータベースの既存のテーブルにレコードを追加するには-
- sqlite3パッケージをインポートします。
- データベースの名前をパラメーターとして渡すことにより、_connect()_メソッドを使用して接続オブジェクトを作成します。
- cursor() メソッドは、SQLite3と通信できるカーソルオブジェクトを返します。 (作成済みの)Connectionオブジェクトでcursor()オブジェクトを呼び出して、カーソルオブジェクトを作成します。 *次に、UPDATEステートメントをパラメーターとして渡すことにより、カーソルオブジェクトでexecute()メソッドを呼び出します。
例
Pythonの例に従って、EMPLOYEEという名前のテーブルを作成し、5つのレコードを挿入して、すべての男性従業員の年齢を1ずつ増やします-
出力
Python SQLite-データの削除
SQLiteテーブルからレコードを削除するには、DELETE FROMステートメントを使用する必要があります。 特定のレコードを削除するには、それと共にWHERE句を使用する必要があります。
特定の行を更新するには、それと共にWHERE句を使用する必要があります。
構文
以下は、SQLiteのDELETEクエリの構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次の文は、姓が「Sangakkara」であるクリケット選手のレコードを削除します。
SELECTステートメントを使用してテーブルの内容を取得すると、1つのレコードが削除されているため、4つのレコードしか表示できません。
WHERE句なしでDELETE FROMステートメントを実行すると、指定されたテーブルのすべてのレコードが削除されます。
すべてのレコードを削除しているため、SELECTステートメントを使用してCRICKETERSテーブルの内容を取得しようとすると、以下に示すように空の結果セットが得られます-
Pythonを使用してデータを削除する
SQLiteデータベースの既存のテーブルにレコードを追加するには-
- sqlite3パッケージをインポートします。
- データベースの名前をパラメーターとして渡すことにより、_connect()_メソッドを使用して接続オブジェクトを作成します。
- cursor() メソッドは、SQLite3と通信できるカーソルオブジェクトを返します。 (作成済みの)Connectionオブジェクトでcursor()オブジェクトを呼び出して、カーソルオブジェクトを作成します。 *次に、DELETEステートメントをパラメーターとして渡すことにより、カーソルオブジェクトでexecute()メソッドを呼び出します。
例
次のpythonの例では、年齢値が25を超えるレコードをEMPLOYEEテーブルから削除します。
出力
Python SQLite-テーブルの削除
DROP TABLEステートメントを使用して、テーブル全体を削除できます。 削除する必要があるテーブルの名前を指定するだけです。
構文
以下は、PostgreSQLのDROP TABLEステートメントの構文です-
例
次のクエリを使用して、名前がCRICKETERSとEMPLOYEESの2つのテーブルを作成したとします-
次の文は、データベースからEmployeeという名前のテーブルを削除します-
Employeeテーブルを削除したため、テーブルのリストを再度取得すると、その中の1つのテーブルのみを観察できます。
Employeeテーブルを再度削除しようとすると、既に削除されているため、以下に示すように「そのようなテーブルはありません」というエラーが表示されます-
これを解決するには、DELTEステートメントと一緒にIF EXISTS句を使用できます。 これにより、テーブルが存在する場合は削除され、存在しない場合はDLETE操作がスキップされます。
Pythonを使用してテーブルを削除する
MYSQLのDROPステートメントを使用して、必要なときにいつでもテーブルを削除できますが、既存のテーブルを削除するときは、テーブルの削除後に失われたデータが復元されないため、非常に注意する必要があります。
例
Pythonを使用してSQLite3データベースからテーブルを削除するには、カーソルオブジェクトで execute() メソッドを呼び出し、dropステートメントをパラメーターとして渡します。
出力
Python SQLite-制限
特定の数でレコードを制限する場合は、SQLiteのLIMIT句を使用してレコードを取得できます。
構文
以下は、SQLiteのLIMIT句の構文です-
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
そして、INSERTステートメントを使用して5つのレコードを挿入した場合-
次のステートメントは、LIMIT句を使用してCricketersテーブルの最初の3つのレコードを取得します-
レコードを1番目ではなくn番目のレコードから制限する必要がある場合は、LIMITとともにOFFSETを使用して制限できます。
Pythonを使用したLIMIT句
SELECTクエリとLIMIT句を渡すことにより、カーソルオブジェクトでexecute()メソッドを呼び出すと、必要な数のレコードを取得できます。
例
次のpythonの例では、LIMIT句を使用してEMPLOYEEテーブルの最初の2つのレコードを取得します。
出力
Python SQLite-参加
データを2つのテーブルに分割したら、結合を使用してこれらの2つのテーブルから結合レコードをフェッチできます。
例
次のクエリを使用して、名前CRICKETERSのテーブルを作成したとします-
CRICKETERSテーブルの各プレーヤーの1日のクリケット統計を記述するOdiStatsテーブルをもう1つ作成します。
次のステートメントは、これら2つのテーブルの値を組み合わせたデータを取得します-
Pythonを使用した結合句
次のSQLiteの例では、Pythonを使用してJOIN句を示しています-
出力
Python SQLite-カーソルオブジェクト
sqlite3.Cursorクラスは、SQLiteステートメントを実行し、クエリの結果セットからデータを取得するメソッドを呼び出すことができるインスタンスです。 Connectionオブジェクト/クラスのcursor()メソッドを使用して Cursor オブジェクトを作成できます。
例
方法
以下は、Cursorクラス/オブジェクトによって提供されるさまざまなメソッドです。
Sr.No | Method & Description |
---|---|
1 |
execute() このルーチンは、SQLステートメントを実行します。 SQLステートメントはパラメーター化できます(つまり、SQLリテラルではなくプレースホルダー)。 psycopg2モジュールは、%s記号を使用したプレースホルダーをサポートします たとえば、cursor.execute( "insert into people values(%s、%s)"、(who、age)) |
2 |
executemany() このルーチンは、シーケンスsqlで見つかったすべてのパラメーターシーケンスまたはマッピングに対してSQLコマンドを実行します。 |
3 |
fetchone() このメソッドは、クエリ結果セットの次の行をフェッチして単一のシーケンスを返します。使用可能なデータがなくなったらNoneを返します。 |
4 |
fetchmany() このルーチンは、クエリ結果の次の行セットをフェッチし、リストを返します。 使用可能な行がなくなると、空のリストが返されます。 このメソッドは、sizeパラメーターで指定された数の行をフェッチしようとします。 |
5 |
fetchall() このルーチンは、クエリ結果のすべての(残りの)行をフェッチし、リストを返します。 使用可能な行がない場合、空のリストが返されます。 |
プロパティ
以下は、カーソルクラスのプロパティです-
Sr.No | Method & Description |
---|---|
1 |
arraySize これは、fetchmany()メソッドによって返される行数を設定できる読み取り/書き込みプロパティです。 |
2 |
description これは、結果セットの列の説明を含むリストを返す読み取り専用プロパティです。 |
3 |
lastrowid これは読み取り専用のプロパティです。テーブルに自動インクリメントされた列がある場合、最後のINSERTまたはUPDATE操作でその列に対して生成された値を返します。 |
4 |
rowcount これは、SELECTおよびUPDATE操作の場合に返される/更新される行の数を返します。 |
5 |
connection この読み取り専用属性は、Cursorオブジェクトが使用するSQLiteデータベース接続を提供します。 |
Python MongoDB-はじめに
Pymongoは、MongoDBで動作するツールを提供するPythonディストリビューションです。PythonからMongoDBデータベースと通信するための最も好ましい方法です。
インストール
pymongoを最初にインストールするには、python3(PIPとともに)およびMongoDBが適切にインストールされていることを確認してください。 次に、次のコマンドを実行します。
検証
pymongoをインストールしたら、新しいテキストドキュメントを開き、次の行を貼り付けて、test.pyとして保存します。
pymongoを適切にインストールした場合、以下に示すようにtest.pyを実行すると、問題は発生しません。
Python MongoDB-データベースの作成
他のデータベースとは異なり、MongoDBはデータベースを作成するための個別のコマンドを提供しません。
一般に、useコマンドは、特定のデータベースを選択または切り替えるために使用されます。 このコマンドは、最初に指定したデータベースが存在するかどうかを確認し、存在する場合は接続します。 データベースがuseコマンドで指定されていない場合、新しいデータベースが作成されます。
したがって、 _ Use_ コマンドを使用して、MongoDBにデータベースを作成できます。
構文
例
次のコマンドは、mydbという名前のデータベースを作成します。
dbコマンドを使用して作成を確認できます。これにより、現在のデータベースが表示されます。
Pythonを使用してデータベースを作成する
pymongoを使用してMongoDBに接続するには、MongoClientをインポートして作成する必要があります。その後、属性passionで作成する必要があるデータベースに直接アクセスできます。
例
次の例では、MangoDBにデータベースを作成します。
出力
MongoClientの作成中にポート名とホスト名を指定することもでき、辞書形式でデータベースにアクセスできます。
例
出力
Python MongoDB-コレクションの作成
MongoDBのコレクションは一連のドキュメントを保持します。これは、リレーショナルデータベースのテーブルに似ています。
これを使用して、次を指定できます-
- コレクションのサイズ。
- 上限付きコレクションで許可されるドキュメントの最大数。
- 作成するコレクションをキャップ付きコレクション(固定サイズコレクション)にするかどうか。
- 作成するコレクションに自動インデックスを付けるかどうか。
構文
MongoDBでコレクションを作成する構文は次のとおりです。
例
次のメソッドは、ExampleCollectionという名前のコレクションを作成します。
同様に、以下はcreateCollection()メソッドのオプションを使用してコレクションを作成するクエリです。
Pythonを使用してコレクションを作成する
次のpythonの例は、MongoDB(mydb)のデータベースに接続し、その中にコレクションを作成します。
例
出力
Python MongoDB-文書の挿入
_insert()_メソッドを使用して、MongoDBにドキュメントを保存できます。 このメソッドは、パラメーターとしてJSONドキュメントを受け入れます。
構文
insertメソッドの構文は次のとおりです。
例
同様に、 _ insert()_ メソッドを使用して複数のドキュメントを挿入することもできます。
Pythonを使用してコレクションを作成する
Pymongoは、MangoDBにドキュメントを挿入するinsert_one()という名前のメソッドを提供します。 このメソッドには、辞書形式でドキュメントを渡す必要があります。
例
次の例では、exampleという名前のコレクションにドキュメントを挿入します。
出力
pymongoを使用して複数のドキュメントをMongoDBに挿入するには、insert_many()メソッドを呼び出す必要があります。
出力
Python MongoDB-検索
構文
以下は、 _ find()_ メソッドの構文です。
例
次のクエリを使用して、sampleという名前のコレクション内のtestDBという名前のデータベースに3つのドキュメントを挿入したとします-
次のようにfind()メソッドを使用して、挿入されたドキュメントを取得できます-
また、findOne()メソッドを使用してコレクションの最初のドキュメントを取得することもできます-
Pythonを使用したデータの取得(検索)
pymongoの find_One() メソッドは、クエリに基づいて単一のドキュメントを取得するために使用されます。一致しない場合、このメソッドは何も返さず、クエリを使用しない場合、コレクションの最初のドキュメントを返します。
このメソッドは、結果のドキュメントを1つだけ取得する必要がある場合、またはクエリが1つのドキュメントのみを返すことが確実な場合に便利です。
例
次のPythonの例では、コレクションの最初のドキュメントを取得します-
出力
1つのクエリで複数のドキュメントを取得するには(単一メソッドのod findメソッド)、pymongoの find() メソッドを使用できます。 クエリを渡していない場合、これはコレクションのすべてのドキュメントを返し、このメソッドにクエリを渡した場合、一致したすべてのドキュメントを返します。
例
出力
Python MongoDB-クエリ
- find()*メソッドを使用して取得している間、クエリオブジェクトを使用してドキュメントをフィルタリングできます。 必要なドキュメントの条件を指定するクエリを、このメソッドのパラメーターとして渡すことができます。
オペレータ
以下は、MongoDBのクエリで使用される演算子のリストです。
Operation | Syntax | Example |
---|---|---|
Equality | \{"key" : "value"} | db.mycol.find(\{"by":"tutorials point"}) |
Less Than | \{"key" :\{$lt:"value"}} | db.mycol.find(\{"likes":\{$lt:50}}) |
Less Than Equals | \{"key" :\{$lte:"value"}} | db.mycol.find(\{"likes":\{$lte:50}}) |
Greater Than | \{"key" :\{$gt:"value"}} | db.mycol.find(\{"likes":\{$gt:50}}) |
Greater Than Equals | \{"key" \{$gte:"value"}} | db.mycol.find(\{"likes":\{$gte:50}}) |
Not Equals | \{"key":\{$ne: "value"}} | db.mycol.find(\{"likes":\{$ne:50}}) |
例1
次の例では、名前がsarmistaであるコレクション内のドキュメントを取得します。
出力
例2
次の例では、年齢の値が26を超えるコレクション内のドキュメントを取得します。
出力
Python MongoDB-並べ替え
コレクションのコンテンツを取得する際、 sort() メソッドを使用して、昇順または降順でコレクションを並べ替えることができます。
このメソッドには、フィールドとソート順(1または-1)を渡すことができます。 ここで、1は昇順、-1は降順です。
構文
_sort()_メソッドの構文は次のとおりです。
例
以下に示すように、コレクションを作成し、それに5つのドキュメントを挿入したと仮定します-
次の行は、年齢に基づいて昇順でソートされたコレクションのすべてのドキュメントを取得します。
Pythonを使用してドキュメントを並べ替える
クエリの結果を昇順または降順に並べ替えるために、pymongoは sort() メソッドを提供します。 このメソッドには、結果に必要なドキュメントの数を表す数値を渡します。
デフォルトでは、このメソッドは指定されたフィールドに基づいて文書を昇順でソートします。 降順でソートする必要がある場合は、フィールド名とともに-1を渡します-
例
次の例では、年齢の値に従って昇順に並べられたコレクションのすべてのドキュメントを取得します-
出力
Python MongoDB-ドキュメントの削除
MongoDBの remove() メソッドを使用して、コレクション内のドキュメントを削除できます。 このメソッドは、2つのオプションのパラメータを受け入れます-
- 文書を削除する条件を指定する削除基準。
- 1つだけ。2番目のパラメーターとしてtrueまたは1を渡すと、1つのドキュメントのみが削除されます。
構文
以下は、remove()メソッドの構文です-
例
以下に示すように、コレクションを作成し、それに5つのドキュメントを挿入したと仮定します-
次のクエリは、Sarmistaという名前の値を持つコレクションのドキュメントを削除します。
削除基準を渡さずに* remove()*メソッドを呼び出すと、コレクション内のすべてのドキュメントが削除されます。
Pythonを使用してドキュメントを削除する
MangoDBのコレクションからドキュメントを削除するには、メソッド* delete_one()および delete_many()*メソッドを使用して、コレクションからドキュメントを削除できます。
これらのメソッドは、ドキュメントを削除する条件を指定するクエリオブジェクトを受け入れます。
detele_one()メソッドは、一致した場合に単一のドキュメントを削除します。 クエリが指定されていない場合、このメソッドはコレクション内の最初のドキュメントを削除します。
例
次のpythonの例では、1006のid値を持つコレクション内のドキュメントを削除します。
出力
同様に、pymongoの delete_many() メソッドは、指定された条件を満たすすべてのドキュメントを削除します。
例
次の例では、年齢の値が26より大きいコレクション内のすべてのドキュメントを削除します-
出力
クエリを渡さずにdelete_many()メソッドを呼び出すと、このメソッドはコレクション内のすべてのドキュメントを削除します。
Python MongoDB-ドロップコレクション
MongoDBの drop() メソッドを使用してコレクションを削除できます。
構文
以下は、drop()メソッドの構文です-
例
次の例では、sampleという名前のコレクションを削除します-
Pythonを使用してコレクションを削除する
drop()メソッドを呼び出すことにより、現在のデータベースからコレクションを削除/削除できます。
例
出力
Python MongoDB-アップデート
更新メソッドは既存のドキュメントを変更しますが、保存メソッドは既存のドキュメントを新しいドキュメントに置き換えます。
構文
以下は、MangoDBのupdate()およびsave()メソッドの構文です-
例
データベースにコレクションを作成し、以下に示すように3つのレコードを挿入したと仮定します-
次のメソッドは、ID 1002のドキュメントの都市値を更新します。
同様に、save()メソッドを使用して同じIDで保存することにより、ドキュメントを新しいデータに置き換えることができます。
Pythonを使用してドキュメントを更新する
単一のドキュメントを取得するfind_one()メソッドと同様に、pymongoのupdate_one()メソッドは単一のドキュメントを更新します。
このメソッドは、更新するドキュメントと更新操作を指定するクエリを受け入れます。
例
次のpythonの例は、コレクション内のドキュメントの場所の値を更新します。
出力
同様に、pymongoの update_many() メソッドは、指定された条件を満たすすべてのドキュメントを更新します。
例
次の例では、コレクション内のすべてのドキュメントの場所の値を更新します(空の状態)-
出力
Python MongoDB-制限
コレクションのコンテンツを取得する際、limit()メソッドを使用して結果のドキュメントの数を制限できます。 このメソッドは、結果に必要なドキュメントの数を表す数値を受け入れます。
構文
以下は、limit()メソッドの構文です-
例
以下に示すように、コレクションを作成し、それに5つのドキュメントを挿入したと仮定します-
次の行は、コレクションの最初の3つのドキュメントを取得します。
Pythonを使用してドキュメントを制限する
クエリの結果を特定の数のドキュメントに制限するために、pymongoは limit() メソッドを提供します。 このメソッドには、結果に必要なドキュメントの数を表す数値を渡します。
例
次の例では、コレクション内の最初の3つのドキュメントを取得します。