すべてのPython開発者が知っておくべきPythonのトップSQLクエリ

公開: 2021-01-29

SQLは、リレーショナルデータベースの管理、操作、および保存に役立つ構造化クエリ言語の略です。 リレーショナルデータベースは、1つまたは別の形式で相関しているテーブルのコレクションで構成されます。 複数のテーブルを使用すると、ターゲット情報のさまざまなエンティティを分離し、データベースの管理を困難にする可能性のある1つのテーブルに数百の列がまとめられるのを防ぐことができます。

これはクエリ言語であり、データベース自体ではありません。 これらのクエリは、Oracle、Microsoft SQL Serverなどのリレーショナルデータベース管理システムで実行できますが、SQLクエリを作成して実行するためのPythonのアプローチがあります。

目次

SQLite3

これはPythonの組み込みライブラリであり、実際のクライアントサーバーモデルを実行しなくても軽量のデータベースを作成できます。 アプリケーションがデータを格納し、SQLコマンドを実行するために内部的に使用できます。 このパッケージは使いやすく、Postgresqlなどの本番ベースのデータベースに同じスキーマを複製できます。 データベースの設定方法を見てみましょう。

  • 標準のインポートステートメント:

sqlite3をsqとしてインポートします

ライブラリはエイリアス「sq」としてインポートされます。

  • 次に、データベースへの接続を作成する必要があります。 接続オブジェクトはこの目的を果たします。

connection = sq.connect(“ example.db”)

このファイルが以前に作成されていない場合は、このコマンドが実行されるとすぐに作成されます。

  • データベースにアクセスして情報をフェッチするには、カーソルオブジェクトを作成する必要があります。

カーソル=connection.cursor()

基本的なセットアップが完了したので、それぞれのテーブルを作成してデータをデータベースにプッシュできますが、その前に、いくつかのSQLコマンドを修正しましょう。

SQLの基本コマンド

SQLは、英語で読み取り可能なコマンドの点で優れています。 これらは通常大文字で入力され、これに関する制限はありません。 これは通常、クエリキーワードが強調表示され、テーブル属性と区別できるようになるように実行されます。 しかし、今ではそれらを異なる色で強調表示する強力なIDEがあるので、どの方法でも機能します。

1.テーブルを作成します

これにより、データベースにオブジェクトやテーブルを保持するデータを作成できます。 データベースには、1つまたは複数のリレーションを持つ多数のテーブルを含めることができます。 テーブルには、保持する値を説明するすべての列のヘッダーがあります。 テーブルを作成するときに、列名、保持するデータのタイプ、およびサイズを指定する必要があります。 列が主キーであるかどうか、null値を持つことができるかどうかなど、他の属性を追加できます。

基本的なテーブルは次のように作成できます。

CREATE TABLE company_data(

id int、

名前varchar(24)、

no_of_employee int

);

2.SELECTとFROM

名前が示すように、テーブルからデータを選択してフェッチするために使用されます。 これは、データを確認できるようにするための最も重要なステップです。 これは、パンダの頭または尾の機能に似ています。

これらのコマンドを使用した単純なクエリは、次のようになります。

SELECT <column_name(s)>

FROM <table_name>;

テーブルからすべての列をフェッチするには、すべての列名の代わりにスター(*)を付けることができます。 LIMITキーワードは、行の最大数を定義するのに役立ちます。 このクエリについて考えてみましょう。

選択する *

FROM example_table

制限5;

3.どこで

where句は、クエリに対する追加の条件を指定するために使用されます。 列の範囲、特定の比較、または否定を含めることができます。

例えば:

クライアント名、会社名を選択します

FROM company_data

WHERE company_name ='upGrad';

4.挿入

この句は、データテーブルに値を追加するために使用されます。 値は、createtableコマンドで列名がテーブルに追加されるのと同じ順序で挿入されます。 複数の行を挿入することも、一度に1つ挿入することもできます。

たとえば、次のクエリは3つのレコードをテーブルに挿入します。

INSERT INTO company_data(id、name、no_of_employees)

(1、'companyz_A'、100)、

(2、'company_B'、200)、

(3、'company_C'、500);

Python経由で実行

コマンドを認識したので、コードでコマンドを実行します。 これまでのところ、データベースに接続してカーソルオブジェクトを作成しました。 このオブジェクトは、データベースでコマンドを実行するのに役立ちます。

cursor.execute('''<QUERY>''')

クエリは文字列として三重引用符で囲まれて渡されます。 この変更をコミットするまで、この変更はデータベースに反映されません。 最後にデータベースへの接続を閉じると、この時点以降に新しい実行が行われないようになります。

この単純なコードを見てください:

sqlite3をsqとしてインポートします

connection = sq.connect(“ example.db”)

カーソル=connection.cursor()

cursor.execute(” '

CREATE TABLE table1(

id int、

名前varchar(24)

)。

”')

cursor.execute(” '

INSERT INTO table1(id、name)

(1、'アップグレード')、

(2、「ブログ」)

”')

cursor.execute(” '

選択する *

FROM table1

”')

connection.commit()

connection.close()

重要なヒント

1.クエリは文字列として渡されるため、f-stringを使用してクエリを変更することは、プログラムを動的でユーザー制御にするための良いオプションのように思われるかもしれませんが、SQLインジェクション攻撃などのセキュリティ問題を引き起こす可能性があります。 これらを回避するには、プレースホルダー「?」を使用しますクエリ内のいくつかの値を置き換えたい場合はいつでも。 例えば:

cursor.execute('“ SELECT?FROM?'''、col_name、table_name)

ユーザーに列名の入力を求めることができ、その値はここで置き換えられます。

2. fetchone()やfetchall()などの関数を使用して、結果を反復処理します。 Fetchoneはクエリの次の行を返し、fetchallはカーソルによってフェッチされたすべての行を返します。 結果はタプルとして返されるため、プログラムの外部関数で変更することはできません。

3.データベースにバルク値を追加する場合は、executemany()関数を使用して、追加する値を含むタプルのリストを渡すことができます。 例えば:

to_add = [(1、'hello')、(2、'World')]

cursor.executemany('INSERT INTO table VALUES(?、?)'、to_add)

また読む: Pythonプロジェクトのアイデアとトピック

世界のトップ大学からオンラインでデータサイエンスコースを学びましょうエグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

SQLは最も好ましいデータベース言語であり、理解しやすいものです。 データサイエンスのほとんどの初心者は、SQLを実践することをお勧めします。これは、データ取得プロセスを改善し、データエンジニアリングがどのように実行されるかを垣間見ることができるためです。 これは、データベース操作の標準言語であり、データベースへのより高速なアクセスを提供します。

データサイエンスについて知りたい場合は、IIIT-BとupGradのデータサイエンスのPGディプロマをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップ、1- on-1業界のメンター、400時間以上の学習、トップ企業との仕事の支援。

SQLの制約について何を知っていますか?

制約は、テーブルに入力されるデータのタイプを決定します。 これらはテーブルの作成時に指定され、単一のフィールドまたは複数のフィールドに適用できます。 SQLの制約は次のとおりです。
NOTNULL-フィールドにNULL値を入力できないようにします。
CHECK-フィールドのすべての値が指定された条件を満たすかどうかをチェックします。
DEFAULT-値が入力されていない場合、デフォルト値をフィールドに自動的に割り当てます。
UNIQUE-フィールドに入力できるのは一意の値のみです。
INDEX-レコードのより高速な取得を提供するフィールドにインデックスを付けます。
PRIMARYKEY-テーブル内の各レコードを一意に識別します。
FOREIGNKEY-テーブル間のリンクを損なう可能性のあるアクションを制限します。

インデックスとそのタイプを説明しますか?

インデックスまたはデータベースインデックスは、データ取得操作をはるかに高速化する特別なルックアップテーブルと呼ぶことができます。 データをより高速に検索するために、より多くのメモリと追加の書き込みを消費します。 インデックスには次の4つのタイプがあります。
1.一意のインデックス
2.非固有インデックス
3.クラスター化されたインデックス

SQLの関係とは何ですか?そのタイプは何ですか?

相互に関係のある複数のエンティティまたは複数の有形および無形のオブジェクト間の関係は、関係と呼ばれます。 SQLには4つのタイプの関係があります。
1.1対1
2.1対多/多対1
3.多対多
4.自己参照関係。