検索

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行目では、

ライブラリをインポートします。次に、
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()
コードブロックで、

を呼び出して、データベースへの接続を初期化します。すべてがうまくいかない場合、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!")行の後、次のことを追加します

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()
テーブルを作成し、

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

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

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

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

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

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

この時点で、
# 创建操作
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()
メソッドでは、実行する必要があるSQLコマンドを配置したことに気付いたかもしれません。別のSQLコマンド(更新やドロップなど)を実行する場合、Python構文は何も変更しません。

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

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

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

records = cursor.execute("SELECT * FROM student")
for row in records:
  print(row)
というメソッドを作成しました。このメソッドは、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

結論

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()
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 までご連絡ください。
Pythonの実行モデル:コンパイル、解釈、またはその両方?Pythonの実行モデル:コンパイル、解釈、またはその両方?May 10, 2025 am 12:04 AM

pythonisbothcompiledinterted.whenyourunapythonscript、itisfirstcompiledintobytecode、これはdenepythonvirtualmachine(pvm).thishybridapproaChallowsforplatform-platform-denodent-codebutcututicut。

Pythonはラインごとに実行されますか?Pythonはラインごとに実行されますか?May 10, 2025 am 12:03 AM

Pythonは厳密に行ごとの実行ではありませんが、最適化され、インタープレーターメカニズムに基づいて条件付き実行です。インタープリターは、コードをPVMによって実行されるBytecodeに変換し、定数式または最適化ループを事前促進する場合があります。これらのメカニズムを理解することで、コードを最適化し、効率を向上させることができます。

Pythonの2つのリストを連結する代替品は何ですか?Pythonの2つのリストを連結する代替品は何ですか?May 09, 2025 am 12:16 AM

Pythonに2つのリストを接続する多くの方法があります。1。オペレーターを使用しますが、これはシンプルですが、大きなリストでは非効率的です。 2。効率的ですが、元のリストを変更する拡張メソッドを使用します。 3。=演算子を使用します。これは効率的で読み取り可能です。 4。itertools.chain関数を使用します。これはメモリ効率が高いが、追加のインポートが必要です。 5。リストの解析を使用します。これはエレガントですが、複雑すぎる場合があります。選択方法は、コードのコンテキストと要件に基づいている必要があります。

Python:2つのリストをマージする効率的な方法Python:2つのリストをマージする効率的な方法May 09, 2025 am 12:15 AM

Pythonリストをマージするには多くの方法があります。1。オペレーターを使用します。オペレーターは、シンプルですが、大きなリストではメモリ効率的ではありません。 2。効率的ですが、元のリストを変更する拡張メソッドを使用します。 3. Itertools.chainを使用します。これは、大規模なデータセットに適しています。 4.使用 *オペレーター、1つのコードで小規模から中型のリストをマージします。 5. numpy.concatenateを使用します。これは、パフォーマンス要件の高い大規模なデータセットとシナリオに適しています。 6.小さなリストに適したが、非効率的な追加方法を使用します。メソッドを選択するときは、リストのサイズとアプリケーションのシナリオを考慮する必要があります。

コンパイルされた通信言語:長所と短所コンパイルされた通信言語:長所と短所May 09, 2025 am 12:06 AM

compiledlanguagesOfferspeedandsecurity、foredlanguagesprovideeaseofuseandportability.1)compiledlanguageslikec arefasterandsecurebuthavelOnderdevelopmentsplat dependency.2)

Python:ループのために、そして最も完全なガイドPython:ループのために、そして最も完全なガイドMay 09, 2025 am 12:05 AM

Pythonでは、forループは反復可能なオブジェクトを通過するために使用され、条件が満たされたときに操作を繰り返し実行するためにしばらくループが使用されます。 1)ループの例:リストを通過し、要素を印刷します。 2)ループの例:正しいと推測するまで、数値ゲームを推測します。マスタリングサイクルの原則と最適化手法は、コードの効率と信頼性を向上させることができます。

Python concatenateリストを文字列に入れますPython concatenateリストを文字列に入れますMay 09, 2025 am 12:02 AM

リストを文字列に連結するには、PythonのJoin()メソッドを使用して最良の選択です。 1)join()メソッドを使用して、 '' .join(my_list)などのリスト要素を文字列に連結します。 2)数字を含むリストの場合、連結する前にマップ(str、数字)を文字列に変換します。 3) '、'などの複雑なフォーマットに発電機式を使用できます。 4)混合データ型を処理するときは、MAP(STR、Mixed_List)を使用して、すべての要素を文字列に変換できるようにします。 5)大規模なリストには、 '' .join(lage_li)を使用します

Pythonのハイブリッドアプローチ:コンピレーションと解釈を組み合わせたPythonのハイブリッドアプローチ:コンピレーションと解釈を組み合わせたMay 08, 2025 am 12:16 AM

pythonusesahybridapproach、コンコイリティレーショントビテコードと解釈を組み合わせて、コードコンピレッドフォームと非依存性bytecode.2)

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。