このチュートリアルでは、Pythonを使用してプログラムでSQLite3データベースを操作します。
SQLiteは一般的に、Pythonを含むほぼすべてのプログラミング言語で使用できるサーバーレスのデータベースです。 サーバーより別途設置サーバーの仕事をSQLiteで接続することができ、データベースです。
SQLiteは、それを使用するために何かを構成または設定する必要がないため、ゼロ構成でリレーショナルデータベース管理システムを提供することができる軽,
SQLiteバージョン3またはSQLite3を使用しますので、始めましょう。
目次
Create Connection
PythonでSQLite3を使用するには、まずsqlite3モジュールをインポートし、データベースに接続してSQLステートメントを実行できるconnectionオブジェクトを作成する必要があります。
connect()関数を使用して接続オブジェクトを作成できます。
import sqlite3con = sqlite3.connect('mydatabase.db')
これにより、’mydatabase’という名前の新しいファイルが作成されます。db”です。,
SQLite3Cursor
PythonでSQLiteステートメントを実行するには、cursorオブジェクトが必要です。 Cursor()メソッドを使用して作成できます。
SQLite3カーソルは、connectionオブジェクトのメソッドです。 SQLite3ステートメントを実行するには、最初に接続を確立し、次のように接続オブジェクトを使用してカーソルのオブジェクトを作成する必要があります。
con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()
これで、cursorオブジェクトを使用してexecute()メソッドを呼び出してSQLクエリを実行できます。,
Create Database
SQLiteとの接続を作成すると、データベースファイルがまだ存在しない場合は自動的に作成されます。 このデータベースファイルはディスク上に作成され、connect関数で:memory:を使用してRAM内にデータベースを作成することもできます。 このデータベー
try、except、finallyブロックで例外を処理するデータベースを作成した以下のコードを考えてみましょう。
まず、sqlite3モジュールをインポートし、次に関数sql_connectionを定義します。, この関数内には、connect()関数が接続を確立した後にconnectionオブジェクトを返すtryブロックがあります。
その後、exceptブロックがあり、例外が発生した場合にはエラーメッセージが出力されます。 エラーがない場合は、接続が確立され、次のようなメッセージが表示されます。
その後、finallyブロックで接続を閉じました。 接続を閉じることは任意ですが、それは良いプログラミングの練習であるため、未使用のリソースからメモリを解放します。,
Create Table
SQLite3でテーブルを作成するには、execute()メソッドでCreate Tableクエリを使用できます。 次の手順を検討してください。
- 接続オブジェクトを作成します。
- 接続オブジェクトから、cursorオブジェクトを作成します。
- cursorオブジェクトを使用して、create table queryをパラメータとしてexecuteメソッドを呼び出します。,
次の属性を持つ従業員を作成しましょう。
employees (id, name, salary, department, position, hireDate)
コードは次のようになります。
上記のコードでは、二つのメソッドを定義しました。
commit()メソッドは、行ったすべての変更を保存します。 最後に、両方のメソッドが呼び出されます。
テーブルが作成されているかどうかを確認するには、SQLite用のDBブラウザを使用してテーブルを表示できます。 Mydatabaseを開きます。,プログラムとdbファイル、あなたはあなたのテーブルが表示されます:
テーブルに挿入
テーブルにデータを挿入するには、INSERT INTO文を使用します。 次のコード行を考えてみましょう。
cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()
データが挿入されているかどうかを確認するには、DBブラウザでBrowse Dataをクリックします。
execute()メソッドのINSERTステートメントに値/引数を渡すこともできます。 疑問符(?)を使うことができます。)各値のプレースホルダーとして。, 挿入の構文は次のようになります。
cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)
ここで、エンティティにはプレースホルダの値が次のように含まれます。
entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')
コード全体は次のようになります。
Update Table
テーブルを更新するには、単に接続を作成し、その接続を使用してcursorオブジェクトを作成し、最後にexecute()メソッドでupdateステートメントを使用します。
idが2に等しい従業員の名前を更新するとします。, 更新のために、IDが2に等しい従業員に対してUPDATEステートメントとを使用します。 この従業員を選択する条件としてWHERE句を使用します。これにより、名前がAndrewからRogersに変更されます。
Selectステートメント
selectステートメントを使用して、特定のテーブルからデータを選択できます。 テーブルからデータのすべての列を選択する場合は、アスタリスク(*)を使用できます。, この構文は次のようになります。
select * from table_name
SQLite3では、selectステートメントはcursorオブジェクトのexecuteメソッドで実行されます。, たとえば、employeesテーブルのすべての列を選択し、次のコードを実行します。
cursorObj.execute('SELECT * FROM employees ')
テーブルからいくつかの列を選択する場合は、次のように列を指定します。
select column1, column2 from tables_name
例えば、
cursorObj.execute('SELECT id, name FROM employees')
selectステートメントは、データベーステーブルから必要なデータを選択します。また、選択したデータを取得する場合は、cursorオブジェクトのfetchall()メソッドが使用されます。 これを次のセクションで説明します。,
すべてのデータを取得する
データベースからデータを取得するには、SELECT文を実行し、cursorオブジェクトのfetchall()メソッドを使用して値を変数に格納します。 その後、変数をループしてすべての値を出力します。
上記のコードは、データベース内のレコードを次のように出力します。
次のようにfetchall()を一行で使用することもできます。
データベースから特定のデータをフェッチする場合は、データベースから特定のデータをフェッチする場合は、データベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータベース内のデータ節。, たとえば、給与が800を超える従業員のidと名前を取得したいとします。 このために、さらに多くの行をテーブルに移入してから、クエリを実行しましょう。
insertステートメントを使用してデータを入力するか、DBブラウザプログラムに手動で入力することができます。
さて、800より大きい給与を持っている人のidと名前を取得するには:
上記のSELECT文では、アスタリスク(*)を使用する代わりに、idとname属性を指定しました。, 結果は次のようになります。
SQLite3rowcount
SQLite3rowcountは、最新の実行されたSQLクエリによって影響を受けるか選択された行数を返すために使用されます。
select文でrowcountを使用すると、選択された行の数がすべてフェッチされるまで不明であるため、-1が返されます。, 以下の例を考えてみましょう。
print(cursorObj.execute('SELECT * FROM employees').rowcount)
したがって、行数を取得するには、すべてのデータをフェッチし、結果の長さを取得する必要があります。
rows = cursorObj.fetchall()print len (rows)
条件(where句)なしでDELETEステートメントを使用すると、テーブル内のすべての行が削除されます。そして、rowcount内の削除された行の合計数を返します。
print(cursorObj.execute('DELETE FROM employees').rowcount)
行が削除されない場合、ゼロを返します。,
List tables
SQLite3データベース内のすべてのテーブルをリストするには、sqlite_masterテーブルをクエリし、fetchall()を使用してSELECTステートメントから結果を
sqlite_masterは、すべてのテーブルを格納するSQLite3のマスターテーブルです。
これは次のようにすべてのテーブルをリストします。
テーブルが存在するかどうかを確認します
テーブルを作成するときは、テーブルがまだ存在していないことを確認する必要があります。 同様に、テーブルを削除/削除する場合は、テーブルが存在する必要があります。,
drop table if exists table_name
たとえば、
cursorObj.execute('drop table if exists projects')
次のクエリを実行することで、アクセスしたいテーブルが存在するかどうかを確認することもできます。
cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())
employeesテーブルが存在する場合、その名前は次のように返されます。
指定したテーブル名が存在しない場合、空の配列が返されます。
drop table
dropステートメントを使用してテーブルを削除/削除できます。, DROPステートメントの構文は次のとおりです。
drop table table_name
テーブルを削除するには、テーブルがデータベースに存在する必要があります。 したがって、次のようにdropステートメントで”if exists”を使用することをお勧めします。
drop table if exists table_name
たとえば、
SQLite3例外
例外は実行時エラーです。 Pythonプログラミングでは、すべての例外はBaseExceptionから派生したクラスのインスタンスです。,
SQLite3では、次の主なPython例外があります。
DatabaseError
データベースに関連するエラーはDatabaseErrorを発生させます。
IntegrityError
IntegrityErrorはDatabaseErrorのサブクラスであり、データ整合性に問題がある場合に発生します。 たとえば、外部データがすべてのテーブルで更新されるわけではないため、データの不整合が発生します。
ProgrammingError
例外ProgrammingErrorは、構文エラーがある場合、またはテーブルが見つからない場合、または関数が間違った数のパラメータ/引数で呼び出された場合に発生します。,
OperationalError
この例外は、異常な切断など、データベース操作が失敗した場合に発生します。 これはプログラマのせいではありません。
NotSupportedError
データベースで定義またはサポートされていないメソッドを使用すると、NotSupportedError例外が発生します。
SQLite3Executemany(Bulk insert)
executemanyステートメントを使用して、複数の行を一度に挿入できます。
次のコードを考えてみましょう:
ここでは、二つの列を持つテーブルを作成し、”データ”は、各列のための四つの値を持っています。, 変数をクエリとともにexecutemany()メソッドに渡します。
値を渡すためにプレースホルダーを使用していることに注意してください。
上記のコードは次の結果を生成します。
接続を閉じる
データベースの操作が完了したら、接続を閉じることをお勧めします。 Close()メソッドを使用して接続を閉じることができます。,
接続を閉じるには、connectionオブジェクトを使用し、次のようにclose()メソッドを呼び出します。
con = sqlite3.connect('mydatabase.db')#program statementscon.close()
SQLite3datetime
Python SQLite3データベースでは、datatimeモジュールをインポート Datetimeに使用できる最も一般的な形式は次のとおりです。
YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow
次のコードを考えてみましょう。
このコードでは、datetimeモジュールを最初にインポートし、assignmentsという名前のテーブルを作成しました。
第三の列のデータ型は日付です。, 列に日付を挿入するには、datetimeを使用しました。デイト 同様に、datetimeを使用できます。時間を処理する時間。
上記のコードは次の出力を生成します。
SQLite3データベースの優れた柔軟性とモビリティは、開発者がそれを使用して作業するすべての製品と一緒に出荷するための最初の選択肢となります。
あなたは彼らの素晴らしい移植性のために、Windows、Linux、Mac OS、Android、およびiOSのプロジェクトでSQLite3データベースを使用することができます。 い船舶ファイルをプロジェクトのことです。
私はあなたがチュートリアルが役に立つことを願っていま, 戻ってくるんだ
ありがとうございます。
Ayesha Tariqは、フルスタックソフトウェアエンジニア、ウェブ開発者、ブロックチェーン開発者の愛好家です。 彼女はc/C++、Java、Kotlin、Python、および様々な他の広範な知識を持っています。