Pythonを使用したSqliteの紹介

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-18 11:21:09467ブラウズ

An Introduction to SQLite with Python

この記事では、詳細なSQLiteデータベースとPythonでの使用について説明します。 Pythonのライブラリを介して操作する方法を学び、最後に、が提供する高度な機能のいくつかを調査して、作業を簡素化します。 sqlite3 sqlite3注:開始する前に、SQLに精通するのが最善です。あなたがそれに慣れていない場合は、単にSQL学習を参照できます。

コアポイント

SQLiteは、単純さと構成の容易さのために、Pythonアプリケーションで一般的に使用される軽量のファイルベースの関連データベース管理システムです。同時アクセスをサポートし、複数のプロセスまたはスレッドが同じデータベースにアクセスできるようにします。ただし、マルチユーザー機能がなく、MySQLやPostgreSQLなどの他のデータベーステクノロジーと同様にプロセスとして管理されていません。
    Pythonの
  • モジュールは、SQLiteをSQLiteで提供し、Pythonでプリインストールされています。ユーザーは、データベースを作成したり、データベースに接続したり、テーブルを作成したり、データを挿入したり、SQLコマンドを実行したりできます。モジュールはまた、プレースホルダーをサポートし、SQLコマンドのパラメーターの交換を可能にし、変数をクエリに簡単に挿入できるようにします。
  • SQLiteでのトランザクションは、データの整合性を確保するためのユニットとして扱われる一連のデータベース操作です。 Pythonのsqlite3モジュールは、挿入、更新、削除、またはステートメントの交換を実行する前に、トランザクションを開始します。ユーザーは、トランザクション中に行われた変更を保存するために
  • メソッドを呼び出し、データベースに接続するときに
  • からsqlite3を設定することにより、トランザクションを明示的に処理できます。 commit() isolation_level Nonesqliteとは何ですか?
sqliteのモットーは次のとおりです。「小さく、高速で、信頼性が高い。2つを選択してください。」

sqliteは、c言語で記述された埋め込みデータベースライブラリです。 MySQLやPostgreSQLなど、他のデータベーステクノロジーに精通している場合があります。これらの手法では、クライアントサーバーの方法を使用します。データベースはサーバーとしてインストールされ、クライアントを使用して接続します。 SQLiteは異なります。これは、プログラムにライブラリとして含まれているため、組み込みデータベースと呼ばれます。すべてのデータはファイルに保存されます(通常は.db拡張機能)。関数を使用してSQLステートメントを実行したり、データベースでその他のアクションを実行したりできます。

また、ファイルベースのストレージソリューションは同時アクセスを提供します。つまり、複数のプロセスまたはスレッドが同じデータベースにアクセスできることを意味します。それで、sqliteとは何ですか?あらゆるタイプのアプリケーションに適していますか?

sqliteは、次の状況でうまく機能します
  • AndroidやiOSなどのほとんどのモバイルオペレーティングシステムに含まれているため、SQLiteは、スタンドアロンのサーバーレスデータストレージソリューションが必要な場合に最適です。
  • 大規模なCSVファイルを使用するのと比較して、SQLのパワーを活用して、すべてのデータを単一のSQLiteデータベースに入れることができます。
  • SQLiteを使用して、アプリケーションの構成データを保存できます。実際、SQLiteは、構成ファイルなどのファイルベースのシステムよりも35%高速です。
一方、SQLiteを選択しない理由は何ですか?

    mysqlやpostgreSQLとは異なり、SQLiteにはマルチユーザー機能がありません。
  • SQLiteは、サービスではなく、ファイルベースのデータベースです。プロセスとして管理することも、起動したり、停止したり、リソースの使用を管理したりすることはできません。
pythonのsqliteインターフェイス

はじめに言及したように、SQLiteはCライブラリです。ただし、Pythonを含むインターフェイスを作成する言語はたくさんあります。

モジュールはSQLインターフェイスを提供し、少なくともSQLite 3.7.15が必要です。 sqlite3

驚くべきことに、はPythonで利用できますので、何もインストールする必要はありません。

sqlite3sqlite3

を使用してください

コードを書く時が来ました!最初の部分では、基本的なデータベースを作成します。最初にすべきことは、データベースを作成してそれに接続することです:

1行目では、

ライブラリをインポートします。次に、
<code class="language-python">import sqlite3
dbName = 'database.db'

try:
  conn = sqlite3.connect(dbName)
  cursor = conn.cursor()
  print("Database created!")

except Exception as e:
  print("Something bad happened: ", e)
  if conn:
    conn.close()</code>
コードブロックで、

を呼び出して、データベースへの接続を初期化します。すべてがうまくいかない場合、sqlite3try/exceptオブジェクトのインスタンスになります。 sqlite3.connect()が失敗した場合、受信した例外を印刷し、データベースへの接続を閉じます。公式ドキュメントに記載されているように、各オープンSQLiteデータベースはconnオブジェクトで表されます。 SQLコマンドを実行する必要があるたびに、Connectionオブジェクトにはtryと呼ばれるメソッドがあります。データベーステクノロジーでは、カーソルはデータベース内のレコードを通過できる制御構造です。 Connection Connectionさて、このコードを実行する場合、次の出力を取得する必要があります。 cursor()

Pythonスクリプトが配置されているフォルダーを確認すると、

という名前の新しいファイルが表示されます。このファイルは、

によって自動的に作成されます。
<code>> Database created!</code>

レコードを作成、読み取り、変更database.db この時点で、新しいテーブルを作成し、最初のエントリを追加し、Select、更新、ドロップなどのSQLコマンドを実行する準備ができています。 sqlite3

テーブルを作成するには、単純なSQLステートメントを実行するだけです。この例では、次のデータを使用して

テーブルを作成します。

print("Database created!")行の後、次のことを追加します

<code class="language-python">import sqlite3
dbName = 'database.db'

try:
  conn = sqlite3.connect(dbName)
  cursor = conn.cursor()
  print("Database created!")

except Exception as e:
  print("Something bad happened: ", e)
  if conn:
    conn.close()</code>
テーブルを作成し、

メソッドを呼び出します。これは、単一のSQLステートメントを実行するときに使用されます。 cursor.execute()

次に、追加する行の挿入操作を実行します。すべての変更が完了したら、

に電話して、保留中のトランザクションをデータベースに送信します。 conn.commit()メソッドが呼び出されない場合、データベースの保留中の変更が失われます。最後に、commit()メソッドを呼び出すことにより、データベースへの接続を閉じます。 conn.close()

わかりました、データベースを照会しましょう!クエリの結果を保持するために変数が必要なので、

の結果をcursor.execute()recordsに変数に保存しましょう。

<code>> Database created!</code>
これを行うと、すべてのレコード出力が標準出力に表示されます。

この時点で、
<code class="language-python"># 创建操作
create_query = '''CREATE TABLE IF NOT EXISTS student(
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  surname TEXT NOT NULL);
  '''
cursor.execute(create_query)
print("Table created!")

# 插入和读取操作
cursor.execute("INSERT INTO student VALUES (1, 'John', 'Smith')")
print("Insert #1 done!")
cursor.execute("INSERT INTO student VALUES (2, 'Lucy', 'Jacobs')")
print("Insert #2 done!")
cursor.execute("INSERT INTO student VALUES (3, 'Stephan', 'Taylor')")
print("Insert #3 done!")
conn.commit()
conn.close()</code>
メソッドでは、実行する必要があるSQLコマンドを配置したことに気付いたかもしれません。別のSQLコマンド(更新やドロップなど)を実行する場合、Python構文は何も変更しません。

cursor.execute()プレースホルダー

メソッドには、引数として文字列が必要です。前のセクションでは、データベースにデータを挿入する方法を見ましたが、すべてがハードコードされています。変数にコンテンツをデータベースに保存する必要がある場合はどうなりますか?この目的のために、

はプレースホルダーと呼ばれる巧妙な機能をいくつか持っています。プレースホルダーを使用すると、パラメーターの交換を使用できます。これにより、変数をクエリに挿入しやすくなります。 cursor.execute() sqlite3この例を見てみましょう:

<code class="language-python">records = cursor.execute("SELECT * FROM student")
for row in records:
  print(row)</code>
というメソッドを作成しました。このメソッドは、4つのパラメーターを受け入れます。最初のパラメーターは

インスタンスであり、他の3つはSQLコマンドで使用されます。 insert_command() Connection

変数のそれぞれは、プレースホルダーを表します。これは、

command?を呼び出すと、挿入ステートメントがstudent_id=1になることを意味します。 name='Jason' surname='Green' insert_command関数を呼び出すと、コマンドとプレースホルダーに置き換えるすべての変数を渡します。これからは、行をINSERT INTO student VALUES(1, 'Jason', 'Green')テーブルに挿入する必要があるたびに、必要なパラメーターを使用して

メソッドを呼び出します。

execute()トランザクションstudent insert_command()トランザクション定義が初めてではない場合でも、その重要性をすばやく確認します。トランザクションは、データベースで実行される一連の操作であり、論理的にユニットと見なされます。

トランザクションの最も重要な利点は、データの整合性を確保することです。上記で紹介したこの例では、それは役に立たないかもしれませんが、複数のテーブルにより多くのデータを処理すると、トランザクションが影響を与えます。

pythonのsqlite3モジュールは、ステートメントを実行、更新、削除、または置き換える前に、execute()およびexecutemany()を実行する前にトランザクションを開始します。これは、2つのことを意味します:

  • commit()メソッドを呼び出すことに注意を払う必要があります。 commit()を実行せずにConnection.close()を呼び出すと、トランザクション中に行うすべての変更が失われます。
  • 同じプロセスで開始されてトランザクションを開くことはできません。

解決策?トランザクションを明示的に処理します。

どうですか?関数呼び出しを使用してsqlite3.connect(dbName, isolation_level=None)の代わりに。 sqlite3.connect(dbName)に設定することにより、isolation_level None次のコードは前のコードの書き直しですが、トランザクションを明示的に使用します:sqlite3

結論

<code class="language-python">import sqlite3
dbName = 'database.db'

try:
  conn = sqlite3.connect(dbName)
  cursor = conn.cursor()
  print("Database created!")

except Exception as e:
  print("Something bad happened: ", e)
  if conn:
    conn.close()</code>
SQLiteとは何か、Pythonプロジェクトにどのように使用するか、高度な機能の一部がどのように機能するかをよく理解していただければ幸いです。トランザクションを明示的に管理することは、最初は少し難しい場合がありますが、確かにそれを最大限に活用するのに役立ちます。

関連の読み取り:

sqlite3 を開始します Unittestとpytest

を使用したPythonユニットテストから始めます

    http pythonリクエストの初心者向けガイド
  • sqlおよびnosql:違い
  • の使用に関するよくある質問
  • PythonのSQLiteデータベースに接続する方法は?
  • モジュール(Pythonでプリインストール)を使用して、SQLiteデータベースに接続できます。接続を確立して接続オブジェクトを取得し、SQLコマンドを実行するカーソルを作成して、接続を確立して
  • メソッドを使用します。
Pythonを使用してSQLiteデータベースでテーブルを作成する方法は? Cursorオブジェクトの

メソッドを使用してSQLコマンドを実行できます。テーブルを作成するには、

ステートメントを使用します。

Pythonを使用してSQLiteテーブルにデータを挿入する方法は?

ステートメントを使用して、テーブルにデータを挿入します。プレースホルダーsqlite3またはconnect()は、SQLインジェクションを避けるためにパラメーター化されたクエリに使用できます。

PythonでSQLiteトランザクションを使用する方法は? SQLiteでのトランザクションは、接続オブジェクトのexecute()およびCREATE TABLEメソッドを使用して管理されます。複数のSQLコマンドを

の間に配置して、単一のトランザクションとして扱われるようにします。 INSERT INTO

以上がPythonを使用したSqliteの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。