著者:Vamei出典:のhttp://www.cnblogs.com/vameiは、転載を歓迎し、このステートメントを保管してください。ありがとうございます!
Pythonは軽量なリレーショナルデータベースSQLiteのが付属しています。SQL言語を使用してこのデータベース。バックエンドのデータベースとしてSQLiteのは、Pythonの建設現場で使用される、または工具データストレージのニーズを作ることができます。SQLiteはまた、HTML5やモバイル端末などの他の分野で幅広いアプリケーションを持っています。sqlite3のPythonの標準ライブラリには、データベースへのインタフェースを提供します。
私は本の書店の分類と価格を格納するための単純なリレーショナルデータベースを作成します。書籍についての情報を記録するために使用されるレコード、書籍のカテゴリ分類:データベースには、2つのテーブルが含まれています。特定のブックに起因する分類は、書籍は、このように、外部キー(外部キー)、テーブルID catogoryの主キーを有します。
データベースを作成します。
私が最初にすべてのデータベース内のデータベースとテーブルを作成します。()データベースに接続する接続を使用した後、私は、ポインタカーソルを配置することにより、SQLコマンドを実行できるようになります:
Vameiことで# インポートsqlite3のの #test.dbという作業ディレクトリ内のファイルです。 CONN = sqlite3.connect( "test.dbという") C = conn.cursor() #テーブルの作成 ( '' 'TABLEカテゴリCREATE c.executeを ''(ID int型主ソートint型キー、名前のテキストを)') 、C。実行( '' 'TABLE帳CREATE (ID int型主キー、 並べ替えint型、 名前のテキスト、 価格本物の、 カテゴリのint型、 FOREIGN KEY(カテゴリ)の参照をカテゴリ(ID))' '') #変更の保存 (conn.commitを) #データベースとの接続クローズ ()はconn.closeを
上記test.dbというのようなディスク上のSQLiteデータベースファイル、データベース全体を容易に移動またはコピーすることができます。test.dbという当初は存在しない、SQLiteは自動的に新しいファイルを作成します。
実行()コマンドを使用して、私は、データベース内の2つのテーブルを作成するために、2つのSQLコマンドを実行しました。一度、作成され保存され、データベースから切断。
データの挿入
上記のデータベースとテーブルを作成し、我々はデータベースの抽象的構造を確立しました。同じデータベースにデータを挿入します。
Vameiにより# インポートsqlite3の CONN = sqlite3.connect( "test.dbという") 、C = conn.cursor() 書籍= [(1、1、 'クックレシピ'、3.12、1)、 (2、3、「Pythonのイントロ」、17.5は、2)、 (3、2、 'OSイントロ'、13.6、2) ] #を実行"挿入" c.execute( "カテゴリ値(1、1。INSERT INTO、 '台所')")# 使用プレースホルダ c.execute( ")?、?、?(カテゴリ値。INSERT INTO"、[(2、2、 'コンピュータは')]) #は、複数のコマンドの実行 '(簿価。INSERT INTO?、(c.executemanyを?、 ?、?、?)」、図書) conn.commit() はconn.close()
また、データは完全なSQL文を実行するために実行()を使用して挿入することができます。SQL文の代替として「?」を使用してパラメータ、および特定の値は、後続のパラメータで指定されています。SQLインジェクション攻撃に対して、この用法が脆弱ので、ここではPythonのフォーマット文字列は、「%sを」として、使用することはできません。
私はまた、複数の挿入executemany()メソッドを実行する複数のレコードを追加することができます。テーブルの各レコードは、そのような要素の上記書籍テーブルとして、構成要素です。
お問い合わせ
クエリの実行後、Pythonはサーキュレータを返し、複数のレコードを取得したチェックが含まれています。あなたは、サイクルを読んでも(提供fetchone sqlite3のを使用することができます)とはfetchAll()メソッドは、レコードを読み取ります。
Vameiことで# インポートsqlite3の CONN = sqlite3.connect( 'test.dbという') C = conn.cursor() #は、1つのレコード取得 ( '並べ替えカテゴリORDERから名前を選択')c.executeを 印刷する(c.fetchone()) 印刷(c.fetchone()) #リストとしてすべてのレコードを取得する ( 'ブックbook.category = 1 SELECT * FROM')c.execute プリント(c.fetchall()) #の反復レコードを Cの行のために。 :( 'SELECT名、価格ブックORDER FROMソートBY')を実行 プリント(行)
更新、削除
あなたはレコードを更新、またはレコードを削除することができます。
Vameiことで# CONN = sqlite3.connect( "test.dbという") C = conn.cursor() c.execute( 'UPDATEブックSET価格=?WHERE ID =?'、(1000年、1)) c.execute(」本からDELETE WHERE ID = 2' ) conn.commit() はconn.close()
あなたはまた、直接テーブル全体を削除することができます。
c.execute( 'DROP TABLEのブック')
あなたはtest.dbという削除すると、データベース全体が削除されます。
概要
sqlite3のちょうどSQLiteのインタフェース。業者はまた、あなたがリレーショナルデータベースのより多くの知識を学ぶ必要がある、SQLiteのデータベースを使用したいです。