
2022/4/28
PCにpythonインストールし本とネットで勉強始め、データベースが扱えるというので
sqlightでDB作成、テーブル作成、商品マスタと販売テーブルをリンクして
品名別の売り上げと総合計出すところまで来ました。
クエリー文が桁位置揃えなど見やすい形に作っても機能することに感動、これなら見やすい。
これを変数に代入してクエリー実行できる。ハッピー!
出力は、今のところ品種別タプルです。
勉強中なのでごく簡単なモデル。品種数3つのマスター(ID 品名 単価、売り上げは品種IDと個数だけ。
それでも join sum 使って売り上げ表や、品種別売り上げ合計数・売上合計金額を出力できました。
MicrosoftのDBソフトのaccessでは、
作成したクエリーを次のクエリー作成の材料(テーブルとクエリー同等)に使え、
ブロック構造的に目的のプログラムができ大変便利に使えています。
python-sqlightでは、そのような使い方はできないのでしょうか?
もしできなければ、クエリー結果を一旦それ用のテーブルのデータ全削除し、データとして入れ込んでテーブルを作り、
sqlightの機能としてのクエリー作成実行し、不要になったらデータやDBを削除する操作が必要に。
どなたか、ご存じでしたらご教示ください。
No.1ベストアンサー
- 回答日時:
##ご教示のサイトで、クエリー結果をview tabelとして再利用できるようになりました。。
##db接続解除後にviewを削除するCREATE TEMPORARY VIEWは便利。
##この場合、sqlite_masterで type = 'view'view では検索できない
##使わないと次回作成済みでエラー
##DROP VIEW使わなくても、次回作成できる。ただ、利用できない。
作ったpythonは下記です。
import sqlite3
dbname = "test.db" #対象DBを宣言
conn = sqlite3.connect(dbname)
cur = conn.cursor() #sql文を実行する窓口cursor
##クエリー結果を臨時使用のtemp viewテーブル view_tにする
cur.execute("""CREATE TEMPORARY VIEW view_t as SELECT * FROM hinmei_master; """)
#注: TEMPORARY指定しないとviewが実テーブル?登録され、再作成するとエラーに
##dbの中にできたviewの名前とviewを作成したsql文を表示する
cur.execute("""select name, sql from sqlite_master where type = 'view';""")
for row in cur.fetchall():
print(row)
print("CREATE TEMPORARY VIEWの場合は、sqlite_masterのviewには存在しない")
##できたview tableの内容を表示する
cur.execute("""SELECT * FROM view_t; """)
for row in cur.fetchall():
print(row)
#cur.execute("DROP VIEW view_t;")
conn.commit() #データベースに行った変更を確定
conn.close() #データベース接続を切断し閉じる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
2つのテーブルをLIKE演算子のよ...
-
同一テーブル内での比較(最新...
-
三科目合計点のクラス別平均点...
-
SQLで、Join句で結合したテ...
-
ADO+ODBCでテーブルに接続する...
-
結合したテーブルをSUMしたい
-
水平分割されたテーブルに対す...
-
副問合せを使わずにUNIONと同様...
-
Accessの構成をコピーしたい
-
SQLサーバのデータが削除できない
-
複数のテーブルからデータを取...
-
2つの同じDBの比較について
-
SQLのテーブルにないデータの出力
-
ExcelのVLOOKUP関数の動作をMyS...
-
SQLサーバに対するSQL文で抽出...
-
DB、キャストとインサートを...
-
テーブル名が可変の場合のクエ...
-
不動産検索サイトのテーブル構成
-
PRIMARY KEYのコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
SQLサーバに対するSQL文で抽出...
-
テーブル名が可変の場合のクエ...
-
副問合せを使わずにUNIONと同様...
-
同一テーブル内での比較(最新...
-
PRIMARY KEYのコピー
-
2つのテーブルをLIKE演算子のよ...
-
結合したテーブルをSUMしたい
-
ExcelのMatch関数のようなもの...
-
ACCESSのVBAにてExcelに行...
-
DB2のSQLコマンドについて
-
データ無し時は空白行にしたい...
-
ADO+ODBCでテーブルに接続する...
-
ACCESS クエリーでソートの不具合
-
改行を含んだデータのインポート
-
複数のテーブルからデータを取...
-
ExcelのVLOOKUP関数の動作をMyS...
おすすめ情報
教えてgoo!で、回答者から教えてもらった
クエリーで作成する仮想テーブル?であるviewを使えば、
accessでできるクエリーをテーブル同様に、次のクエリーの材料に使えることが分かりました。
ただ、pythonとsqlightで入門編のいろいろな本やネット解説では、viewに触れているものがほとんど見当たりません。
accessでの経験では、クエリー結果を次のクエリー使えないと、実質使えないので、この機能は重要だと思っていました。
python上のsqlightで、これができることが分かったので、十分に「使える」と思います。