PythonはどのようにSQLiteデータベースを操作しますか?


前に書く
SQLiteは小型の関係型データベースで、単独のサービス、ゼロ配置が不要なことが最大の特徴です。私たちが前に話した二つのデータベースは、MySQLであろうと、MongoDBであろうと、インストールが必要です。インストールして実行するということは、すでにサービスが走っているということに相当します。
SQLiteは前述の2つのデータベースとは異なります。まずPythonは既に対応する駆動モジュールを標準ライブラリの一部として使っています。Pythonをインストールしたら使えます。さらに、SQLiteデータベースファイルは操作ファイルのように操作できます。もう一つは、SQLiteソースコードは著作権に制限されていません。
接続を確立
SQLiteも関係データベースですので、SQLは直接中で使用できます。SQLiteの駆動は既にPythonの中にありますので、引用すればそのまま使用できます。以前にMySQLを話しましたので、今回の内容については分かりやすくなります。

>>> import sqlite3
>>> conn = sqlite3.connect('lite.db')
上のコードから接続先を得ましたが、MySQLより接続が簡単だと思いますか?sqlite 3.connect('lite.db')の中で、すでにそのデータベースがあったら、直接にそれを接続します。ないと自動的に一つを建てます。ここの経路は自由に指定できます。
以下のコードは接続対象の属性と方法を示します。

>>> dir(conn)
['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'commit', 'create_aggregate', 'create_collation', 'create_function', 'cursor', 'execute', 'executemany', 'executescript', 'in_transaction', 'interrupt', 'isolation_level', 'iterdump', 'rollback', 'row_factory', 'set_authorizer', 'set_progress_handler', 'set_trace_callback', 'text_factory', 'total_changes']
遊覧標識を立てる
このステップはMySQLにも似ています。データベースに接続した後、ラベルオブジェクトを作成します。

>>> cur = conn.cursor()
次に、データベースの内容に対する操作は、すべてラベルオブジェクト方法で実行されます。

>>> dir(cur)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'arraysize', 'close', 'connection', 'description', 'execute', 'executemany', 'executescript', 'fetchall', 'fetchmany', 'fetchone', 'lastrowid', 'row_factory', 'rowcount', 'setinputsizes', 'setoutputsize']
私達は中で一連の私達の熟知している名称を見ました。
1.データベーステーブルの作成
SQLiteデータベースに対して、私達が以前に知っていたSQL命令は全部使えます。

>>> create_table = "create table books (title,author,language)"
>>> cur.execute(create_table)
<sqlite3.Cursor object at 0x104f296c0>
このようにデータベースlite.dbにブックを作成しました。この表にデータを追加できます。

>>> cur.execute('insert into books values("python basic","rocky","python")')
<sqlite3.Cursor object at 0x104f296c0>
データを保存できるようにするためには、次のような操作が必要です。

>>> conn.commit()
>>> cur.close()
>>> conn.close()
以上、先ほど作成したデータベースの中にもう一つのブックがありました。表にもう一つの記録がありました。
2.クエリー
保存したら調べてみます。

>>> conn = sqlite3.connect('lite.db')
>>> cur = conn.cursor()
>>> cur.execute('select * from books')
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python')]
3.一括挿入
私たちはブックスの表に多くの内容を追加して、他の操作をしやすくします。

>>> books = [("first book","first","c"),("second book","second","c++"),("third book","third","java")]
今回は大量挿入をします。

>>> cur.executemany('insert into books values (?,?,?)',books)
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()
次に私たちはループステートメントでクエリーの結果を印刷します。

>>> rows = cur.execute('select * from books')
>>> for row in rows:
... print(row)
... 
('python basic', 'rocky', 'python')
('first book', 'first', 'c')
('second book', 'second', 'c++')
('third book', 'third', 'java')
4.更新
前述のように、cur.execute()ではSQL文を書いてデータベースを操作できます。

>>> cur.execute("update books set title='physics' where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()
次に条件によって調べてみます。

>>> cur.execute("select * from books where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()


[('physics', 'first', 'c')]
5.削除
削除もデータベース操作に必要なアクションです。

>>> cur.execute("select * from books")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python'), ('physics', 'first', 'c'), ('third book', 'third', 'java')]
最後に、データベースの操作が完了したら、必ず「ドアを閉めてください」ということを忘れないでください。

>>> cur.close()
>>> conn.close()
後に書く
基本的な知識はこれぐらいです。もちろんこれに限らないです。実際のプログラミングの中で私達はきっと多くの問題に出会うことができて、みんなは多く公式文書を調べて、問題を解決することをマスターすることを覚えています。
これでPythonの操作データはこの部分で終わりました。実はこの章だけではなく、「ゼロ基礎入門Python」というシリーズ全体を計画しています。これで終了しました。その後、私が出会った知識が増え、Pythonに関するものを更新します。一緒に頑張りましょう。
もしあなたがこの文章があなたの役に立つと思うなら、称賛+注目を歓迎し、あなたとの交流を期待します。
The end
以上はPythonがSQLiteデータベースをどのように操作するかの詳細です。pythonがSQLiteデータベースを操作することについての資料は他の関連記事に注目してください。