pythonでfoobarのalternativeを作る 8 version 2
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
自分のPCの音楽ファイルをタグでデータベース化 8
190515 の開発日記
DBの簡易ビューア
見るだけ、data取得は出来ない
DBの簡易ビューア出来た
まだコンソール、見るだけ
data取得はGUIにしなきゃ無理だろうなあ
```
import sqlite3
db=r'database.db'
conn = sqlite3.connect( db )
c = conn.cursor()
c.execute("select * from sqlite_master where type='table'")
table=c.fetchone()[1] # 最初のテーブル名
# print(table)
des=c.execute('select * from {}'.format(table) ).description
colis=[item[0] for item in des]
# print(colis)
i=0
nonull=[]
null=[]
for col in colis :
res=c.execute( 'select count(*) from {} where {} IS NULL'.format(table,colis[i]) )
null.append(res.fetchall()[0][0])
res=c.execute( 'select count(*) from {} where {} IS NOT NULL'.format(table,colis[i]) )
nonull.append(res.fetchall()[0][0])
i+=1
print('DATABASE--{}'.format(db))
print(' TABLE --{}'.format(table))
print('')
all=[colis,nonull,null]
for i in all:
for ii in i :
print('{:>10}'.format(ii) , end='')
print('')
c.close()
conn.close()
input('')
```
- コンソール、GUIはこれから
- 複数テーブルには対応してないけどGUIにしたら選べるようには出来そう
自分的には需要無いので実装するつもりはないが( ´∀`)
- **テーブルとカラムにプレースホルダーは使えない**らしい
でも`format`でいける
やっぱpythonからsqliteつかうのはやりづらいわ**┐('д')┌**
-
**何故ですか???**
でも`format`でいける、↓ここに感謝
https://codeday.me/jp/qa/20190222/300516.html
やっぱpythonからsqliteつかうのは面倒だわ**┐('д')┌**
- しっかりタグデータを取得出来ているかを知りたくて全てのカラムについてNULLの個数を調べて表示しているが、このときのselectでcountは*にする。
`count A where A IS NULL` ってコードにしたら0しか返ってこなくて少し悩んだ。考えたらcount Aの時点でNULLは除外されてるから当然だった。
- 綺麗に表示したくてformat文を使った。GUIの時もこれで文字列を作ればListView使わずにTextCtrlで表示できて簡単かな。DBなんだからListViewを使うのが本筋なのかな??
- 次はwxでGUIを組んでselect文を実行出来るようにしたいんだけど、whereとかlikeとかlimitとかをどうするか悩ましいなあ
190515 の開発日記
DBの簡易ビューア出来た
まだコンソール、見るだけ
data取得はGUIにしなきゃ無理だろうなあ
import sqlite3
db=r'database.db'
conn = sqlite3.connect( db )
c = conn.cursor()
c.execute("select * from sqlite_master where type='table'")
table=c.fetchone()[1] # 最初のテーブル名
# print(table)
des=c.execute('select * from {}'.format(table) ).description
colis=[item[0] for item in des]
# print(colis)
i=0
nonull=[]
null=[]
for col in colis :
res=c.execute( 'select count(*) from {} where {} IS NULL'.format(table,colis[i]) )
null.append(res.fetchall()[0][0])
res=c.execute( 'select count(*) from {} where {} IS NOT NULL'.format(table,colis[i]) )
nonull.append(res.fetchall()[0][0])
i+=1
print('DATABASE--{}'.format(db))
print(' TABLE --{}'.format(table))
print('')
all=[colis,nonull,null]
for i in all:
for ii in i :
print('{:>10}'.format(ii) , end='')
print('')
c.close()
conn.close()
input('')
-
複数テーブルには対応してないけどGUIにしたら選べるようには出来そう
自分的には需要無いので実装するつもりはないが( ´∀`) -
テーブルとカラムにプレースホルダーは使えないらしい
何故ですか???
でもformat
でいける、↓ここに感謝
https://codeday.me/jp/qa/20190222/300516.html
やっぱpythonからsqliteつかうのは面倒だわ**┐('д')┌** -
しっかりタグデータを取得出来ているかを知りたくて全てのカラムについてNULLの個数を調べて表示しているが、このときのselectでcountは*にする。
count A where A IS NULL
ってコードにしたら0しか返ってこなくて少し悩んだ。考えたらcount Aの時点でNULLは除外されてるから当然だった。 -
綺麗に表示したくてformat文を使った。GUIの時もこれで文字列を作ればListView使わずにTextCtrlで表示できて簡単かな。DBなんだからListViewを使うのが本筋なのかな??
-
次はwxでGUIを組んでselect文を実行出来るようにしたいんだけど、whereとかlikeとかlimitとかをどうするか悩ましいなあ