ホームページ  >  記事  >  バックエンド開発  >  Pythonはsqlite3モジュールを使用してsqliteデータベースを操作します

Pythonはsqlite3モジュールを使用してsqliteデータベースを操作します

高洛峰
高洛峰オリジナル
2016-10-18 09:38:151292ブラウズ

SQLite は、C ライブラリに含まれる軽量のデータベースです。個別のメンテナンス プロセスは必要なく、非標準の SQL クエリを使用してデータベースにアクセスできます。

一部のアプリケーションは SQLite を使用して内部データを保存します。また、後で大規模なデータベースに転送するためにアプリケーションのプロトタイプを作成するときにも使用できます。

SQLite の主な利点:

1. 一貫したファイル形式:

SQLite を Oracle または PostgreSQL と比較するのではなく、SQLite と比較する必要があります。ビッグエンディアン、リトルエンディアン、32/64 ビット、その他のプラットフォーム関連の問題など、優れた移植性を提供するだけでなく、特定の情報に基づいてインデックスを確立するなど、効率的なデータ アクセスも提供して、アクセスを向上させます。この種のデータのソートのパフォーマンスは、通常のファイルを操作する場合には SQLite が提供するトランザクション機能を効果的に保証できません。

2. 組み込みデバイスまたはモバイルデバイス上のアプリケーション: SQLite は実行時に消費するリソースが少なく、管理オーバーヘッドを必要としないため、PDA、スマートフォンなどのモバイルデバイスに適しています。は疑いの余地がありません。

3. 内部データベース:

一部のアプリケーション シナリオでは、最終的にデータベース サーバーに挿入されたデータの有効性を確認するために、データベース サーバーに挿入されたデータに対してデータ フィルタリングまたはデータ クリーニングを実行する必要があります。場合によっては、単一のレコードだけではデータの正当性を判断できない場合があり、その代わりに、短期間の履歴データを使用して特別な計算を実行し、その計算結果を使用して現在のデータが正当であるかどうかを判断します。 。

このアプリケーションでは、SQLite を使用して履歴データのこの部分をバッファリングできます。 SQLite にも適用される別の簡単なシナリオがあります。それは、統計の事前計算です。たとえば、リアルタイムでデータを収集するサービス プログラムを実行している場合、10 秒ごとにデータを要約して時間ごとの統計データを作成する必要がある場合があります。この統計データにより、ユーザーがクエリを実行する際のデータ量が大幅に削減され、大幅に改善されます。フロントエンドプログラムのクエリ効率。このアプリケーションでは、収集したデータを 1 時間以内に SQLite にキャッシュし、その時間が経過すると、キャッシュされたデータを計算してデータをクリアします。

4. データ分析:

SQLite が提供する SQL 機能を最大限に活用して、簡単なデータ統計分析関数を完成させることができます。これは、yaml ファイルや csv ファイルには匹敵しません。

私の言葉では、非常に小さいので、データの移行は非常に簡単で、ファイルを直接転送するだけです。 実は最初からleveldbを選んでいたのですが、機能がnosqlに似ているので、少し複雑なクエリが少し面倒です。

1. 新しいデータベースを作成します: sqlite3 ファイル名

この test.db にはすべてのデータが保存されます。

sqlite3 rui.db

2. 既存のデータベースを開きます: sqlite3 既存のファイル名

ファイルが現在のディレクトリにない場合、新しいデータベースを作成するコマンドは、既存のデータベースを開くコマンドとまったく同じです。存在する場合は作成し、存在する場合は開きます。

3. データのインポート: .read データ ファイル

メモ帳を開き、次の SQL ステートメントをメモ帳にコピーし、上記の Db ディレクトリに test.sql として保存し、コマンド ライン環境に入力します

。 read test.sql

は、すべてのデータを rui.db データベースにインポートします。

4. すべてのデータテーブルを一覧表示します: .tables

上記の作業をすべて完了したら、すべてのデータテーブルを一覧表示できます

[root@devops-ruifengyun /tmp ]$ sqlite3 rui.db 
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
ceshi  tbl1 
sqlite> 
sqlite>

5. データベース構造を表示します: .schema

実際、それらはいくつかの SQL ですステートメントでは、図

sqlite> .schema
CREATE TABLE tbl1(one varchar(10), two smallint);
CREATE TABLE ceshi (user text, note text);

に示すように、データベースの構造を記述します。 .schema テーブル名

sqlite> .schema ceshi
CREATE TABLE ceshi (user text, note text)

7. 特定のデータをエクスポートします。 table: .dump テーブル名

sqlite> .dump tbl1
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE tbl1(one varchar(10), two smallint);
INSERT INTO "tbl1" VALUES('goodbye',20);
INSERT INTO "tbl1" VALUES('hello!',10);
COMMIT;

Python sqlite3 の使い方を説明しましょう。実際、その構文は mysql

import sqlite3
#原文: xiaorui.cc 
#链接数据库文,sqlite都是以文件的形式存在的。
#如果数据库文件不存在,回新建一个,如果存在则打开此文件
conn = sqlite3.connect('example')
c = conn.cursor()
#创建table
c.execute('''create table ceshi (user text, note text)''')
   
# 插入数据,执行SQL语句
c.execute('''insert into ceshi (user,note)  values('mPfiJRIH9T','mPfiJRIH9T')''')
c.execute('''insert into ceshi (user,note)  values('7IYcUrKWbw','7IYcUrKWbw')''')
c.execute('''insert into ceshi (user,note)  values('bXB9VcPdnq','bXB9VcPdnq')''')
c.execute('''insert into ceshi (user,note)  values('2JFk7EWcCz','2JFk7EWcCz')''')
c.execute('''insert into ceshi (user,note)  values('QeBFAlYdPr','QeBFAlYdPr')''')
c.execute('''insert into ceshi (user,note)  values('bDL4T69rsj','bDL4T69rsj')''')
c.execute('''insert into ceshi (user,note)  values('BOxPqmkEd9','BOxPqmkEd9')''')
c.execute('''insert into ceshi (user,note)  values('rvBegjXs16','rvBegjXs16')''')
c.execute('''insert into ceshi (user,note)  values('CWrhA2eSmQ','CWrhA2eSmQ')''')
c.execute('''insert into ceshi (user,note)  values('qQicfV2gvG','qQicfV2gvG')''')
c.execute('''insert into ceshi (user,note)  values('s3vg1EuBQb','s3vg1EuBQb')''')
c.execute('''insert into ceshi (user,note)  values('Lne4xj3Xpc','Lne4xj3Xpc')''')
c.execute('''insert into ceshi (user,note)  values('PH3R86CKDT','PH3R86CKDT')''')
c.execute('''insert into ceshi (user,note)  values('HEK7Ymg0Bw','HEK7Ymg0Bw')''')
c.execute('''insert into ceshi (user,note)  values('lim2OCxhQp','lim2OCxhQp')''')
c.execute('''insert into ceshi (user,note)  values('kVFfLljBJI','kVFfLljBJI')''')
c.execute('''insert into ceshi (user,note)  values('Hpbs3VOXNq','Hpbs3VOXNq')''')
c.execute('''insert into ceshi (user,note)  values('f5ubmznBIE','f5ubmznBIE')''')
c.execute('''insert into ceshi (user,note)  values('beJCQA2oXV','beJCQA2oXV')''')
c.execute('''insert into ceshi (user,note)  values('JyPx0iTBGV','JyPx0iTBGV')''')
c.execute('''insert into ceshi (user,note)  values('4S7RQTqw2A','4S7RQTqw2A')''')
c.execute('''insert into ceshi (user,note)  values('ypDgkKi27e','ypDgkKi27e')''')
c.execute('''insert into ceshi (user,note)  values('Anrwx8SbIk','Anrwx8SbIk')''')
c.execute('''insert into ceshi (user,note)  values('k5ZJFrd8am','k5ZJFrd8am')''')
c.execute('''insert into ceshi (user,note)  values('KYcTv54QVC','KYcTv54QVC')''')
c.execute('''insert into ceshi (user,note)  values('Jv6OyfMA0g','Jv6OyfMA0g')''')
c.execute('''insert into ceshi (user,note)  values('kpSLsQYzuV','kpSLsQYzuV')''')
c.execute('''insert into ceshi (user,note)  values('u2zkJQWdOY','u2zkJQWdOY')''')
c.execute('''insert into ceshi (user,note)  values('D0aspFbW8c','D0aspFbW8c')''')
c.execute('''insert into ceshi (user,note)  values('CwqhvDOrWZ','CwqhvDOrWZ')''')
c.execute('''insert into ceshi (user,note)  values('Tdy5LA9sWO','Tdy5LA9sWO')''')
c.execute('''insert into ceshi (user,note)  values('76HnRVbLX0','76HnRVbLX0')''')
c.execute('''insert into ceshi (user,note)  values('B3aoFibRPV','B3aoFibRPV')''')
c.execute('''insert into ceshi (user,note)  values('7Q6lNdL5JP','7Q6lNdL5JP')''')
c.execute('''insert into ceshi (user,note)  values('Hsob6Jyv4A','Hsob6Jyv4A')''')
#将变动保存到数据库文件,如果没有执行词语句,则前面的insert 语句操作不会被保存
conn.commit()
c.execute('''select * from ceshi ''').fetchall()
#得到所有的记录
rec = c.execute('''select * from ceshi''')
print c.fetchall()

に似ています。

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