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

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

Oct 18, 2016 am 09:38 AM

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 までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Investing.comの反クローラーメカニズムをバイパスするニュースデータを取得する方法は? Apr 02, 2025 am 07:03 AM

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

See all articles