Files
tophux_scrape/__pycache__/sqlite_viewer.cpython-313.pyc

61 lines
22 KiB
Plaintext
Raw Normal View History

2025-11-27 07:54:42 +08:00
<EFBFBD>
f'iZ?<00><00><><00>SrSSKrSSKrSSKrSSKJr SSKJrJrJ r J
r
J r J r J r JrJrJrJrJrJrJrJrJrJrJrJr SSKJr SSKJr "SS\5rS r\ S
:Xa\"5 gg) u<>
SQLite数据库查看器 - 基于PySide6
功能打开product目录下的product.db的sqlite文件显示表和数据的界面
<EFBFBD>N)<01>logger)<13> QApplication<6F> QMainWindow<6F> QVBoxLayout<75> QHBoxLayout<75>QWidget<65> QPushButton<6F> QTableWidget<65>QTableWidgetItem<65> QListWidget<65>QListWidgetItem<65> QSplitter<65> QFileDialog<6F>QLabel<65>
QStatusBar<EFBFBD> QMessageBox<6F> QHeaderView<65> QComboBox<6F> QLineEdit<69> QGroupBox)<01>Qt)<01>QActionc<00><>^<00>\rSrSrSrU4SjrSrSrSrSr Sr
S r S
r S r S rS rSrSrSrSrSrSrSrU=r$)<15> SQLiteViewer<65>u!SQLite数据库查看器主窗口c<00><>><01>[TU]5 [R"S5 SUlSUlUR 5 g)Nu!初始化SQLite数据库查看器)<07>super<65>__init__r<00>info<66> db_connection<6F> current_table<6C>init_ui)<02>self<6C> __class__s <20><>PC:\Users\xiaji\Documents\个人文件夹\夏骥\hothub的抓取\sqlite_viewer.pyr<00>SQLiteViewer.__init__s4<00><><00> <0A><07><18><1A><0E> <0B> <0B>7<>8<>!<21><04><1A>!<21><04><1A> <0C> <0C> <0C><0E>c<00><><00>[R"S5 URS5 URSSSS5 [ 5nUR U5 [ U5nURU5 URU5 URU5 UR5 UR5 [R"S5 g)u初始化用户界面u设置主窗口界面<E7958C>SQLite数据库查看器<E79C8B>di<>i u界面初始化完成N) rr<00>setWindowTitle<6C> setGeometryr<00>setCentralWidgetr<00>create_top_buttons<6E>create_filter_section<6F>create_splitter<65>create_status_bar<61>create_menubar)r#<00>central_widget<65> main_layouts r%r"<00>SQLiteViewer.init_ui s<><00><00><0E> <0B> <0B>+<2B>,<2C> <0C><1B><1B>6<>7<> <0C><18><18><13>c<EFBFBD>4<EFBFBD><13>-<2D>!<21><19><0E> <0C><1D><1D>n<EFBFBD>-<2D>"<22>.<2E>1<> <0B> <0A><1F><1F> <0B>,<2C> <0A>"<22>"<22>;<3B>/<2F> <0A><1C><1C>[<5B>)<29> <0A><1E><1E> <20> <0A><1B><1B><1D><0E> <0B> <0B>+<2B>,r'c<00>z<00>[R"S5 [5n[S5UlURR
R UR5 URUR5 [S5Ul URR
R UR5 URRS5 URUR5 [S5Ul URUR5 UR5 URU5 g)u创建顶部按钮布局u创建顶部按钮<E68C89>打开SQLite数据库u刷新Fu未打开数据库N)rrrr <00> open_button<6F>clicked<65>connect<63> open_database<73> addWidget<65>refresh_button<6F> refresh_data<74>
setEnabledr<00> db_path_label<65>
addStretch<EFBFBD> addLayout)r#<00>layout<75> button_layouts r%r.<00>SQLiteViewer.create_top_buttons>s<><00><00><0E> <0B> <0B>(<28>)<29>#<23> <0A> <0A>'<27>'><3E>?<3F><04><18> <0C><18><18> <20> <20>(<28>(<28><14>);<3B>);<3B><<3C><15><1F><1F><04> 0<> 0<>1<>*<2A>(<28>3<><04><1B> <0C><1B><1B>#<23>#<23>+<2B>+<2B>D<EFBFBD>,=<3D>,=<3D>><3E> <0C><1B><1B>&<26>&<26>u<EFBFBD>-<2D><15><1F><1F><04> 3<> 3<>4<>$<24>$8<>9<><04><1A><15><1F><1F><04> 2<> 2<>3<><15> <20> <20>"<22><0E><18><18><1D>'r'c<00><><00>[R"S5 [S5n[U5nUR [ S55 [ 5UlURRS5 UR UR5 UR [ S55 [5Ul
URRS5 URRS5 UR UR5 [S5Ul URRRUR 5 UR UR5 [S5UlUR"RRUR$5 UR"R'S 5 UR UR"5 UR)5 URR'S 5 URR'S 5 URR'S 5 UR U5 g
) u创建筛选控件区域u 数据筛选u 筛选字段:<3A><>u 筛选条件:uB输入筛选条件name='test' 或 created_at>'2024-01-01'<27>,u筛选u 清除筛选FN)rrrrr<rr<00> field_combo<62>setMinimumWidthr<00> filter_input<75>setPlaceholderTextr <00> filter_buttonr9r:<00> apply_filter<65>clear_filter_button<6F> clear_filterr?rA)r#rC<00> filter_group<75> filter_layouts r%r/<00>"SQLiteViewer.create_filter_sectionUs<><00><00><0E> <0B> <0B>.<2E>/<2F>!<21><1E>0<> <0C>#<23>L<EFBFBD>1<> <0A> <16><1F><1F><06><EFBFBD> 7<>8<>%<25>;<3B><04><18> <0C><18><18>(<28>(<28><13>-<2D><15><1F><1F><04> 0<> 0<>1<> <16><1F><1F><06><EFBFBD> 7<>8<>&<26>K<EFBFBD><04><19> <0C><19><19>,<2C>,<2C>-q<>r<> <0C><19><19>)<29>)<29>#<23>.<2E><15><1F><1F><04> 1<> 1<>2<>)<29><18>2<><04><1A> <0C><1A><1A>"<22>"<22>*<2A>*<2A>4<EFBFBD>+<<3C>+<<3C>=<3D><15><1F><1F><04> 2<> 2<>3<>$/<2F>~<7E>#><3E><04> <20> <0C> <20> <20>(<28>(<28>0<>0<><14>1B<31>1B<31>C<> <0C> <20> <20>+<2B>+<2B>E<EFBFBD>2<><15><1F><1F><04> 8<> 8<>9<><15> <20> <20>"<22> <0A><18><18>#<23>#<23>E<EFBFBD>*<2A> <0C><19><19>$<24>$<24>U<EFBFBD>+<2B> <0C><1A><1A>%<25>%<25>e<EFBFBD>,<2C><0E><18><18><1C>&r'c<00><><00>[R"S5 [[R5n[ 5n[ U5nUR[S55 [5Ul
URRRUR5 URUR5 [ 5n[ U5nUR[S55 [5UlURR!S5 URUR5 URU5 URU5 UR#SS/5 URU5 g)u创建分割器界面u数据库表列表:u
表数据:TrHi<>N)rrrr<00>
Horizontalrrr<rr <00>
table_list<EFBFBD> itemClickedr:<00>on_table_selectedr
<00>
data_table<EFBFBD>setAlternatingRowColors<72>setSizes)r#rC<00>splitter<65> left_widget<65> left_layout<75> right_widget<65> right_layouts r%r0<00>SQLiteViewer.create_splitter<65>s <00><00><0E> <0B> <0B>+<2B>,<2C><1C>R<EFBFBD>]<5D>]<5D>+<2B><08><1E>i<EFBFBD> <0B>!<21>+<2B>.<2E> <0B><13><1D><1D>f<EFBFBD>%:<3A>;<3B><<3C>%<25>-<2D><04><0F> <0C><0F><0F>#<23>#<23>+<2B>+<2B>D<EFBFBD>,B<>,B<>C<><13><1D><1D>d<EFBFBD>o<EFBFBD>o<EFBFBD>.<2E><1F>y<EFBFBD> <0C>"<22><<3C>0<> <0C><14><1E><1E>v<EFBFBD>l<EFBFBD>3<>4<>&<26>.<2E><04><0F> <0C><0F><0F>/<2F>/<2F><04>5<><14><1E><1E>t<EFBFBD><EFBFBD><EFBFBD>/<2F><10><1A><1A>;<3B>'<27><10><1A><1A><<3C>(<28><10><19><19>3<EFBFBD><03>*<2A>%<25><0E><18><18><18>"r'c<00><><00>[R"S5 [5UlUR UR5 URR S5 g)u创建状态栏u就绪N)rrr<00>
status_bar<EFBFBD> setStatusBar<61> showMessage<67>r#s r%r1<00>SQLiteViewer.create_status_bar<61>s<<00><00><0E> <0B> <0B>%<25>&<26>$<24>,<2C><04><0F> <0C><19><19>$<24>/<2F>/<2F>*<2A> <0C><0F><0F>#<23>#<23>H<EFBFBD>-r'c<00>z<00>[R"S5 UR5nURS5n[ SU5nUR
R UR5 URU5 [ SU5nUR
R UR5 URU5 g)u创建菜单栏u文件u打开数据库u退出N)
rr<00>menuBar<61>addMenur<00> triggeredr:r;<00> addAction<6F>close)r#<00>menubar<61> file_menu<6E> open_action<6F> exit_actions r%r2<00>SQLiteViewer.create_menubar<61>s<><00><00><0E> <0B> <0B>%<25>&<26><16>,<2C>,<2C>.<2E><07><1C>O<EFBFBD>O<EFBFBD>H<EFBFBD>-<2D> <09><1D>/<2F><14>6<> <0B><13><1D><1D>%<25>%<25>d<EFBFBD>&8<>&8<>9<><11><1B><1B>K<EFBFBD>(<28><1D>h<EFBFBD><04>-<2D> <0B><13><1D><1D>%<25>%<25>d<EFBFBD>j<EFBFBD>j<EFBFBD>1<><11><1B><1B>K<EFBFBD>(r'c<00><><00>[R"S5 [RR SS5n[RR U5(a[ R"USUS5up#O[ R"USSS5up#U(a+[R"SU35 URU5 gg) u打开SQLite数据库文件u打开数据库文件对话框<E8AF9D>productz
product.dbr7u/SQLite数据库文件 (*.db *.sqlite *.sqlite3)<29>u打开数据库文件: N) rr<00>os<6F>path<74>join<69>existsr<00>getOpenFileName<6D>connect_to_database)r#<00> default_path<74> file_path<74>_s r%r;<00>SQLiteViewer.open_database<73>s<><00><00><0E> <0B> <0B>4<>5<><1A>w<EFBFBD>w<EFBFBD>|<7C>|<7C>I<EFBFBD>|<7C><<3C> <0C> <0A>7<EFBFBD>7<EFBFBD>><3E>><3E>,<2C> '<27> '<27>&<26>6<>6<><14>-<2D>|<7C>=n<><0E>L<EFBFBD>I<EFBFBD>q<EFBFBD>'<27>6<>6<><14>-<2D>r<EFBFBD>3d<33><0E>L<EFBFBD>I<EFBFBD> <15> <12>K<EFBFBD>K<EFBFBD>1<>)<29><1B>=<3D> ><3E> <10> $<24> $<24>Y<EFBFBD> /<2F> r'c<00><><00>UR(aURR5 [R"U5Ul[R
"S5 UR RS[RRU535 URRS[RRU535 URRS5 UR5 g![R a>n[R""SU35 [$R&"USSU35 SnAgSnAff=f) u!连接到指定的SQLite数据库u数据库连接成功u 数据库: u已连接到数据库: Tu数据库连接失败: <20>错误u无法打开数据库: N)r rm<00>sqlite3r:rrr@<00>setTextrvrw<00>basenamercrer=r?<00>load_table_list<73>Error<6F>errorr<00>critical)r#r}<00>es r%r{<00> SQLiteViewer.connect_to_database<73>s<00><00> P<01><13>!<21>!<21><14>"<22>"<22>(<28>(<28>*<2A>!(<28><1F><1F><19>!;<3B>D<EFBFBD> <1E> <12>K<EFBFBD>K<EFBFBD>/<2F> 0<> <10> <1E> <1E> &<26> &<26><1B>R<EFBFBD>W<EFBFBD>W<EFBFBD>5E<35>5E<35>i<EFBFBD>5P<35>4Q<34>'R<> S<> <10>O<EFBFBD>O<EFBFBD> '<27> '<27>*A<>"<22>'<27>'<27>BR<42>BR<42>S\<5C>B]<5D>A^<5E>(_<> `<60> <10> <1F> <1F> *<2A> *<2A>4<EFBFBD> 0<> <11> <20> <20> "<22><><16>}<7D>}<7D> P<01> <12>L<EFBFBD>L<EFBFBD>2<>1<EFBFBD>#<23>6<> 7<> <17> <20> <20><14>x<EFBFBD>3J<33>1<EFBFBD>#<23>1N<31> O<> O<><4F> P<01>s<00>C=D<00>E<03>4E <03> Ec<00>x<00>UR(dgURR5nURS5 UR5nURR 5 UH,n[ US5nURRU5 M. [R"S[U5S35 URRS[U5S35 g![Ra>n[R"SU35 [ R""USSU35 SnAgSnAff=f) u加载数据库表列表Nz1SELECT name FROM sqlite_master WHERE type='table'ru
加载了 u 个表u
已加载 u加载表列表失败: r<>)r <00>cursor<6F>execute<74>fetchallrV<00>clearr <00>addItemrr<00>lenrcrer<>r<>r<>rr<>)r#r<><00>tables<65>table<6C>itemr<6D>s r%r<><00>SQLiteViewer.load_table_list<73>s<><00><00><13>!<21>!<21> <12> P<01><19>'<27>'<27>.<2E>.<2E>0<>F<EFBFBD> <12>N<EFBFBD>N<EFBFBD>N<> O<><1B>_<EFBFBD>_<EFBFBD>&<26>F<EFBFBD> <10>O<EFBFBD>O<EFBFBD> !<21> !<21> #<23><1F><05>&<26>u<EFBFBD>Q<EFBFBD>x<EFBFBD>0<><04><14><0F><0F>'<27>'<27><04>-<2D> <20> <13>K<EFBFBD>K<EFBFBD>*<2A>S<EFBFBD><16>[<5B>M<EFBFBD><17>9<> :<3A> <10>O<EFBFBD>O<EFBFBD> '<27> '<27>*<2A>S<EFBFBD><16>[<5B>M<EFBFBD><17>(I<> J<><4A><16>}<7D>}<7D> P<01> <12>L<EFBFBD>L<EFBFBD>2<>1<EFBFBD>#<23>6<> 7<> <17> <20> <20><14>x<EFBFBD>3J<33>1<EFBFBD>#<23>1N<31> O<> O<><4F> P<01>s<00>CC'<00>'D9<03>;4D4<03>4D9c<00><><00>UR5n[R"SU35 X lUR U5 UR U5 g)u0当表被选中时加载表数据和字段列表u 选中表: N)<06>textrrr!<00>load_table_data<74>update_field_combo)r#r<><00>
table_names r%rX<00>SQLiteViewer.on_table_selected<65>sB<00><00><19>Y<EFBFBD>Y<EFBFBD>[<5B>
<EFBFBD><0E> <0B> <0B>k<EFBFBD>*<2A><1C>.<2E>/<2F>'<27><1A> <0C><1C><1C>Z<EFBFBD>(<28> <0C><1F><1F>
<EFBFBD>+r'c<00>\<00>UR(dgURR5nURSUS35 UR5nUVs/sHoDSPM nnURSU35 UR5nURR [ U55 URR[ U55 URRU5 [U5HNupx[U5H:up<>[U
b [U
5OS5n URRXyU 5 M< MP URR5R[R 5 ["R$"SUS[ U5S 35 UR&R)S
US [ U5S 35 gs snf![*R,a>n ["R."S U 35 [0R2"USS U 35 Sn A gSn A ff=f)u加载指定表的数据N<E68DAE>PRAGMA table_info(<28>)<29><00>SELECT * FROM ruu
加载表 u 数据完成,共 u 行u表 z: <20>
行数据u加载表数据失败: r<>)r r<>r<>r<>rY<00> setRowCountr<74><00>setColumnCount<6E>setHorizontalHeaderLabels<6C> enumerater <00>str<74>setItem<65>horizontalHeader<65>setSectionResizeModer<00>ResizeToContentsrrrcrer<>r<>r<>rr<>) r#r<>r<><00>columns<6E>col<6F> column_names<65>data<74>row_idx<64>row_data<74>col_idx<64> cell_datar<61>r<>s r%r<><00>SQLiteViewer.load_table_data<74>s<><00><00><13>!<21>!<21> <12> P<01><19>'<27>'<27>.<2E>.<2E>0<>F<EFBFBD> <13>N<EFBFBD>N<EFBFBD>/<2F>
<EFBFBD>|<7C>1<EFBFBD>=<3D> ><3E><1C>o<EFBFBD>o<EFBFBD>'<27>G<EFBFBD>.5<EFBFBD>6<>g<EFBFBD>s<EFBFBD><01>F<EFBFBD>g<EFBFBD>L<EFBFBD>6<> <13>N<EFBFBD>N<EFBFBD>^<5E>J<EFBFBD><<3C>8<> 9<><19>?<3F>?<3F>$<24>D<EFBFBD> <11>O<EFBFBD>O<EFBFBD> '<27> '<27><03>D<EFBFBD> <09> 2<> <10>O<EFBFBD>O<EFBFBD> *<2A> *<2A>3<EFBFBD>|<7C>+<<3C> =<3D> <10>O<EFBFBD>O<EFBFBD> 5<> 5<>l<EFBFBD> C<>&/<2F>t<EFBFBD>_<EFBFBD>!<21><07>*3<>H<EFBFBD>*=<3D>&<26>G<EFBFBD>+<2B>i<EFBFBD>>S<>C<EFBFBD> <09>N<EFBFBD>Y[<5B>\<5C>D<EFBFBD><18>O<EFBFBD>O<EFBFBD>+<2B>+<2B>G<EFBFBD>d<EFBFBD>C<>+><3E>&5<> <11>O<EFBFBD>O<EFBFBD> ,<2C> ,<2C> .<2E> C<> C<>K<EFBFBD>D`<60>D`<60> a<> <12>K<EFBFBD>K<EFBFBD>*<2A>Z<EFBFBD>L<EFBFBD>0D<30>S<EFBFBD><14>Y<EFBFBD>K<EFBFBD>t<EFBFBD>T<> U<> <10>O<EFBFBD>O<EFBFBD> '<27> '<27>$<24>z<EFBFBD>l<EFBFBD>"<22>S<EFBFBD><14>Y<EFBFBD>K<EFBFBD>z<EFBFBD>(R<> S<><53>+7<><37>.<17>}<7D>}<7D> P<01> <12>L<EFBFBD>L<EFBFBD>2<>1<EFBFBD>#<23>6<> 7<> <17> <20> <20><14>x<EFBFBD>3J<33>1<EFBFBD>#<23>1N<31> O<> O<><4F> P<01>s+<00>AG<00>G<04>%E.G<00>G<00>H+<03>-4H&<03>&H+c<00><><00>UR(dgURR5nURSUS35 UR5nURR 5 UH#nUSnURR U5 M% URRS5 URRS5 URRS5 [R"SUS[U5S35 g![Ra>n[R"S U35 [ R""US
S U35 SnAgSnAff=f) u更新字段选择下拉框Nr<4E>r<>r<>Tu更新字段下拉框: u, 共 u
个字段u获取表字段信息失败: r<>)r r<>r<>r<>rIr<>r<>r?rKrMrrr<>r<>r<>r<>r<00>warning)r#r<>r<>r<><00>column<6D>
field_namer<EFBFBD>s r%r<><00>SQLiteViewer.update_field_combo!s.<00><00><13>!<21>!<21> <12> U<01><19>'<27>'<27>.<2E>.<2E>0<>F<EFBFBD> <12>N<EFBFBD>N<EFBFBD>/<2F>
<EFBFBD>|<7C>1<EFBFBD>=<3D> ><3E><1C>o<EFBFBD>o<EFBFBD>'<27>G<EFBFBD> <11> <1C> <1C> "<22> "<22> $<24>"<22><06>#<23>A<EFBFBD>Y<EFBFBD>
<EFBFBD><14> <20> <20>(<28>(<28><1A>4<>"<22>
<11> <1C> <1C> '<27> '<27><04> -<2D> <10> <1D> <1D> (<28> (<28><14> .<2E> <10> <1E> <1E> )<29> )<29>$<24> /<2F> <12>K<EFBFBD>K<EFBFBD>1<>*<2A><1C>V<EFBFBD>C<EFBFBD><07>L<EFBFBD>><3E>Q[<5B>\<5C> ]<5D><><16>}<7D>}<7D> U<01> <12>L<EFBFBD>L<EFBFBD>8<><11><03><<3C> =<3D> <17> <1F> <1F><04>h<EFBFBD>2O<32>PQ<50>s<EFBFBD>0S<30> T<> T<><54> U<01>s<00>C9D<00>E <03>"4E<03>E c
<00><><00>UR(aUR(dgURR5nURR 5R 5nU(aU(d[R"USS5 gURR5nSURSUS3nSUS3nURXE45 UR5nURSURS 35 UR5nUVs/sHo<>S
PM n nURR[U55 URR[U 55 URR!U 5 [#U5HNup<>[#U 5H:up<>[%U b ['U 5OS 5nURR)X<>U5 M< MP URR+5R-[.R05 UR2R5S 5 [6R8"S USUS[U5S35 UR:R=S[U5SUSUS35 gs snf![>R@a>n[6RB"SU35 [RD"USSU35 SnAgSnAff=f)u应用筛选条件Nu警告u*请选择筛选字段并输入筛选条件r<E4BBB6>z WHERE z LIKE ?<3F>%r<>r<>r<>ruTu应用筛选条件: z LIKE '%u%', 匹配到 r<>u筛选结果: u 行数据 (条件: u 包含 'z')u筛选数据失败: r<>)#r r!rI<00> currentTextrKr<><00>striprr<>r<>r<>r<>rYr<>r<>r<>r<>r<>r r<>r<>r<>r<>rr<>rOr?rrrcrer<>r<>r<>r<>)r#<00>selected_field<6C>filter_conditionr<6E><00>query<72> filter_valuer<65>r<>r<>r<>r<>r<>r<>r<>r<>r<>s r%rN<00>SQLiteViewer.apply_filter>s<><00><00><13>!<21>!<21><14>);<3B>);<3B> <12><1D>)<29>)<29>5<>5<>7<><0E><1F>,<2C>,<2C>1<>1<>3<>9<>9<>;<3B><18><1D>%5<> <17> <1F> <1F><04>h<EFBFBD>0\<5C> ]<5D> <12>( M<01><19>'<27>'<27>.<2E>.<2E>0<>F<EFBFBD>%<25>T<EFBFBD>%7<>%7<>$8<><07><0E>?O<>w<EFBFBD>W<>E<EFBFBD><1F>/<2F>0<><01>2<>L<EFBFBD> <13>N<EFBFBD>N<EFBFBD>5<EFBFBD>/<2F> 2<><19>?<3F>?<3F>$<24>D<EFBFBD> <13>N<EFBFBD>N<EFBFBD>/<2F><04>0B<30>0B<30>/C<>1<EFBFBD>E<> F<><1C>o<EFBFBD>o<EFBFBD>'<27>G<EFBFBD>.5<EFBFBD>6<>g<EFBFBD>s<EFBFBD><01>F<EFBFBD>g<EFBFBD>L<EFBFBD>6<> <11>O<EFBFBD>O<EFBFBD> '<27> '<27><03>D<EFBFBD> <09> 2<> <10>O<EFBFBD>O<EFBFBD> *<2A> *<2A>3<EFBFBD>|<7C>+<<3C> =<3D> <10>O<EFBFBD>O<EFBFBD> 5<> 5<>l<EFBFBD> C<>&/<2F>t<EFBFBD>_<EFBFBD>!<21><07>*3<>H<EFBFBD>*=<3D>&<26>G<EFBFBD>+<2B>i<EFBFBD>>S<>C<EFBFBD> <09>N<EFBFBD>Y[<5B>\<5C>D<EFBFBD><18>O<EFBFBD>O<EFBFBD>+<2B>+<2B>G<EFBFBD>d<EFBFBD>C<>+><3E>&5<> <11>O<EFBFBD>O<EFBFBD> ,<2C> ,<2C> .<2E> C<> C<>K<EFBFBD>D`<60>D`<60> a<> <11> $<24> $<24> /<2F> /<2F><04> 5<> <12>K<EFBFBD>K<EFBFBD>.<2E>~<7E>.><3E>h<EFBFBD>GW<47>FX<46>Xf<58>gj<67>ko<6B>gp<67>fq<66>q{<7B>|<7C> }<7D> <10>O<EFBFBD>O<EFBFBD> '<27> '<27>.<2E><13>T<EFBFBD><19> <0B>CW<43>Xf<58>Wg<57>gp<67>rB<02>qC<02>CE<02>)F<02> G<02><>)7<><37>,<17>}<7D>}<7D> M<01> <12>L<EFBFBD>L<EFBFBD>/<2F><01>s<EFBFBD>3<> 4<> <17> <20> <20><14>x<EFBFBD>3G<33><01>s<EFBFBD>1K<31> L<> L<><4C> M<01>s,<00>BJ<00>J<04>$E+J<00>J<00>K'<03>)4K"<03>"K'c<00><><00>UR(dgURUR5 URR5 URR S5 [ R"S5 URRS5 g![a>n[ R"SU35 [R"USSU35 SnAgSnAff=f)u'清除筛选条件显示所有数据NFu*已清除筛选条件显示所有数据u清除筛选失败: r<>)r!r<>rKr<>rOr?rrrcre<00> Exceptionr<6E>rr<>)r#r<>s r%rP<00>SQLiteViewer.clear_filterts<><00><00><13>!<21>!<21> <12> M<01> <10> <20> <20><14>!3<>!3<> 4<> <11> <1D> <1D> #<23> #<23> %<25> <11> $<24> $<24> /<2F> /<2F><05> 6<> <12>K<EFBFBD>K<EFBFBD>A<> B<> <10>O<EFBFBD>O<EFBFBD> '<27> '<27>(T<> U<><55><18> M<01> <12>L<EFBFBD>L<EFBFBD>/<2F><01>s<EFBFBD>3<> 4<> <17> <20> <20><14>x<EFBFBD>3G<33><01>s<EFBFBD>1K<31> L<> L<><4C> M<01>s<00>BB<00>
C<03> 4C<03>Cc<00><><00>[R"S5 UR(aURUR5 gUR 5 g)u刷新当前数据u 刷新数据N)rrr!r<>r<>rfs r%r><00>SQLiteViewer.refresh_data<74>s7<00><00><0E> <0B> <0B>N<EFBFBD>#<23> <0F> <1D> <1D> <10> <20> <20><14>!3<>!3<> 4<> <10> <20> <20> "r'c<00><><00>[R"S5 UR(aURR5 UR 5 g)u关闭事件处理u关闭应用程序N)rrr rm<00>accept)r#<00>events r%<00>
closeEvent<EFBFBD>SQLiteViewer.closeEvent<6E>s3<00><00><0E> <0B> <0B>(<28>)<29> <0F> <1D> <1D> <10> <1E> <1E> $<24> $<24> &<26> <0A> <0C> <0C>r') rOr!rYr r@rIrMrKr8r=rcrV)<18>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__rr"r.r/r0r1r2r;r{r<>rXr<>r<>rNrPr>r<><00>__static_attributes__<5F> __classcell__)r$s@r%rrsi<00><><00>+<2B><17>-<2D><(<28>.+'<27>Z#<23>:.<2E>)<29> 0<>&P<01>(P<01>,,<2C>$P<01>LU<01>:4M<01>lM<01>,#<23><17>r'rc<00>z<00>[R"S5 [R"SSSS9 [[R
5nUR S5 URS5 [5nUR5 [R"S5 [R"UR55 g )
u 主函数u启动SQLite数据库查看器zsqlite_viewer.logz10 MB<4D>INFO)<02>rotation<6F>levelr)z1.0.0u应用程序启动完成N) rr<00>addr<00>sys<79>argv<67>setApplicationName<6D>setApplicationVersionr<00>show<6F>exit<69>exec)<02>app<70>viewers r%<00>mainr<6E><00>s~<00><00>
<EFBFBD>K<EFBFBD>K<EFBFBD>0<>1<> <0B>J<EFBFBD>J<EFBFBD>"<22>W<EFBFBD>F<EFBFBD>C<>
<16>s<EFBFBD>x<EFBFBD>x<EFBFBD>
<20>C<EFBFBD><08><1A><1A>5<>6<><07><1D><1D>g<EFBFBD>&<26> <19>^<5E>F<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>M<EFBFBD>
<EFBFBD>K<EFBFBD>K<EFBFBD>*<2A>+<2B><07>H<EFBFBD>H<EFBFBD>S<EFBFBD>X<EFBFBD>X<EFBFBD>Z<EFBFBD>r'<00>__main__)!r<>r<>rvr<><00>logurur<00>PySide6.QtWidgetsrrrrrr r
r r r rrrrrrrrr<00>PySide6.QtCorer<00> PySide6.QtGuirrr<>r<><00>r'r%<00><module>r<>sf<00><01><04>
 <0B> <09><0E><19>5<>5<>5<>5<>5<>5<>
<1E>!<21>A<17>;<3B>A<17>H <19>( <0C>z<EFBFBD><19><08>F<EFBFBD>r'