Files
SignatureSystem/lib/__pycache__/db.cpython-39.pyc

152 lines
16 KiB
Plaintext
Raw Normal View History

2026-07-20 13:16:17 +08:00
a
<00>`OjM<00>@snddlZddlZddlZddlmZe<02>e<05>Zdadadd<04>Z dd<06>Z
dd<08>Z d d
<EFBFBD>Z d d <0C>Z d d<0E>Zdd<10>ZdNdd<13>Zdd<15>Zdd<17>Zdd<19>Zdd<1B>Zdd<1D>Zdd<1F>Zd d!<21>Zd"d#<23>Zd$d%<25>ZdOd(d)<29>ZdPd*d+<2B>ZdQd,d-<2D>ZdRd.d/<2F>ZdSd0d1<64>ZdTd2d3<64>ZdUd4d5<64>Z dVd6d7<64>Z!dWd8d9<64>Z"d:d;<3B>Z#d<d=<3D>Z$d>d?<3F>Z%d@dA<64>Z&dBdC<64>Z'dDdE<64>Z(dFdG<64>Z)dHdI<64>Z*dJdK<64>Z+dLdM<64>Z,dS)X<>N)<01>datetimecCstj<01>tj<01>tj<01>t<04><01><01>S)N)<05>os<6F>path<74>dirname<6D>abspath<74>__file__<5F>rr<00> lib/db.py<70>_get_project_root sr
cCs:ddlm}|<00>}|d}tj<03>|<02>s6tj<03>t<06>|<02>}|S)Nr)<01>get_sqlite_configr)<07>
lib.configr rr<00>isabs<62>joinr
)r <00>cfgrrrr <00>_get_sqlite_db_paths   rc
Cs<>z ddl}Wnty*t<02>d<02>YdS0ddlm}|<01>}z8|j|d|d|d|d|dd |jjd
d <0B>}|WSt y<>}zt<02>d t
|<04><01>WYd}~dSd}~00dS) Nru%pymysql 未安装, 无法使用 MySQL<51><01>get_mysql_config<69>host<73>port<72>user<65>password<72>database<73>utf8mb4<62>)rrrrr<00>charset<65> cursorclass<73>connect_timeoutuMySQL 连接失败: %s) <0B>pymysql<71> ImportError<6F>logger<65>warningr r<00>connect<63>cursors<72>
DictCursor<EFBFBD> Exception<6F>str)rrr<00>conn<6E>errr <00>_try_mysql_connects,  
 <02>
r(c
Csz ddl}Wnty YdS0ddlm}|<01>}z<>|j|d|d|d|dd|jjd d
<EFBFBD>}|<03><07><00>T}|<04>d |d f<01>|<04> <09>s<>|<04>d |d <00>|<03>
<EFBFBD>t <0B> d|d <00>Wd<00>n1s<>0Y|<03> <0A>WdSt<0E>y}zt <0B>dt|<05><01>WYd}~dSd}~00dS)NrFrrrrrrr)rrrrrrrzJSELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = %srzECREATE DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ciu!MySQL 数据库 '%s' 创建成功Tu%MySQL 确保数据库存在失败: %s)rrr rr!r"r#<00>cursor<6F>execute<74>fetchone<6E>commitr<00>info<66>closer$r r%)rrrr&r)r'rrr <00>_ensure_mysql_database4s@   <02>
<08>
<EFBFBD>.r/cCsDtdur2ztjdd<02>tWSty0daYn0t<03>}|r@|a|S)NT)Z reconnect)<04> _mysql_poolZpingr$r(<00>r&rrr <00>_get_mysql_connectionYs  
r2cCsFt<00>}tjtj<03>|<00>dd<02>t<05>|<00>}tj|_|<01> d<03>|<01> d<04>|S)NT)<01>exist_okzPRAGMA journal_mode=WALzPRAGMA foreign_keys=ON)
rr<00>makedirsrr<00>sqlite3r!ZRowZ row_factoryr*)Zdb_pathr&rrr <00>_get_sqlite_connectionhs


r6cCs(tdkrt<01>}|r|Stdkr$t<02>SdS)N<>mysql<71>sqlite)<03>
_active_dbr2r6r1rrr <00>get_connectionrsr:FcCs<>ddlm}|<01>}|dkrvt<02>}|r*t<03>nd}|rTdat|<04>|<04><06>t<07>d<05>dS|rft<07> d<07>dSt<07>
d <09>d
an`|d
kr<>d
anRt<03>}|r<>dat<02>t|<04>|<04><06>t<07>d <0B>dS|r<>t<07> d<07>dSt<07>
d <09>d
atd
kr<>t <0B>t<07>d t <0C><00>dS) u<>初始化数据库。
参数:
- ``strict_mysql``: True 表示严格按 SRS 15.3.4 — 配置了 mysql 但不可用时返回失败,
不静默回退 SQLite。False启动期默认允许回退以便开发模式可用。
r<00><01> get_db_typer7Nu 数据库初始化完成 (MySQL)Tu3MySQL 不可用且 strict_mysql=True拒绝服务Fu!MySQL 不可用, 回退到 SQLiter8u.数据库初始化完成 (MySQL, 自动检测)u%数据库初始化完成 (SQLite): %s) r r<r/r(r9<00>_init_mysql_tablesr.rr-<00>errorr <00>_init_sqlite_tablesr)Z strict_mysqlr<<00>db_typeZokr&rrr <00> init_database|sF 





rAcCs8ddlm}|<00>}|dkrdStdkr4t<03>}|duSdS)u<>SRS 15.3.4API 路径在配置 type=mysql 时必须保证 MySQL 可用。
返回 True 表示可用False 表示应返回 5xx。
rr;r8Tr7NF)r r<r9r2)r<r@r&rrr <00>ensure_mysql_available<6C>s rBc
Cs<>zH|<00><00><00>}|<01>d<01>Wd<00>n1s*0Y|<00><02>t<03>d<02>Wn6ty~}zt<03>dt|<02><01><00>WYd}~n
d}~00dS)Na<4E>
CREATE TABLE IF NOT EXISTS user_sign (
user_id VARCHAR(50) PRIMARY KEY,
user_name VARCHAR(100) NOT NULL,
sign_image LONGBLOB NOT NULL,
is_signature TINYINT(1) NOT NULL DEFAULT 0,
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
uMySQL 数据表初始化完成u"MySQL 数据表初始化失败: %s)r)r*r,rr-r$r>r%)r&r)r'rrr r=<00>s
(
r=c
Csxt<00>}zbz|<00>d<01>|<00><02>Wn>ty\}z&|<00><04>t<05>dt|<01><01><00>WYd}~n
d}~00W|<00><08>n
|<00><08>0dS)Na<4E>
CREATE TABLE IF NOT EXISTS user_sign (
user_id TEXT PRIMARY KEY,
user_name TEXT NOT NULL,
sign_image BLOB NOT NULL,
is_signature INTEGER NOT NULL DEFAULT 0,
create_time TEXT DEFAULT (datetime('now','localtime')),
update_time TEXT DEFAULT (datetime('now','localtime'))
)
u#SQLite 数据表初始化失败: %s) r6r*r,r$<00>rollbackrr>r%r.)r&r'rrr r?<00>s
r?cCstdkrt|<00>St|<00>S<00>Nr7)r9<00>_mysql_query_by_user_id<69>_sqlite_query_by_user_id<69><01>user_idrrr <00>query_by_user_id<69>srIc
Cs<>t<00>}|st|<00>SzP|<01><02><00>4}|<02>d|f<01>|<02><04>}|r<|ndWd<00>WS1sV0YWn<ty<>}z$t<06>dt|<04><01>t|<00>WYd}~Sd}~00dS)Nz*SELECT * FROM user_sign WHERE user_id = %s<>MySQL 查询失败: %s) r2rFr)r*r+r$rr>r%<00>rHr&r)<00>rowr'rrr rE<00>s
0rEcCsFt<00>}z0|<01>d|f<01>}|<02><02>}|r*t|<03>ndW|<01><04>S|<01><04>0dS)Nz)SELECT * FROM user_sign WHERE user_id = ?<3F>r6r*r+<00>dictr.<00>rHr&r)rLrrr rF<00>s<08>rFcCstdkrt|<00>St|<00>SrD)r9<00>_mysql_query_by_user_name<6D>_sqlite_query_by_user_name<6D><01> user_namerrr <00>query_by_user_namesrTc
Cs<>t<00>}|st|<00>SzD|<01><02><00>(}|<02>d|f<01>|<02><04>Wd<00>WS1sJ0YWn<ty<>}z$t<06>dt|<03><01>t|<00>WYd}~Sd}~00dS)Nz,SELECT * FROM user_sign WHERE user_name = %srJ) r2rQr)r*<00>fetchallr$rr>r%<00>rSr&r)r'rrr rP s
,rPcCs@t<00>}z*|<01>d|f<01>}dd<03>|<02><02>D<00>W|<01><03>S|<01><03>0dS)Nz+SELECT * FROM user_sign WHERE user_name = ?cSsg|] }t|<01><01>qSr<00>rN<00><02>.0<EFBFBD>rrrr <00>
<listcomp><00>z._sqlite_query_by_user_name.<locals>.<listcomp><3E>r6r*rUr.<00>rSr&r)rrr rQs<08>rQ<00><00>cCs tdkrt|||<02>St|||<02>SrD)r9<00>_mysql_query_all<6C>_sqlite_query_all)<03>page<67> page_size<7A>keywordrrr <00> query_all#s rfc
Cs&t<00>}|st|||<02>Sz<>|d|}|<03><02><00><>}|r<>|<05>dd|<02>d<03>d|<02>d<03>f<02>|<05><04>d}|<05>dd|<02>d<03>d|<02>d<03>||f<04>n&|<05>d<06>|<05><04>d}|<05>d||f<02>|<05><05>}Wd<00>n1s<>0Y||||d<08>WSt<06>y }z(t<07>d t |<08><01>t|||<02>WYd}~Sd}~00dS)
Nr_zRSELECT COUNT(*) as total FROM user_sign WHERE user_id LIKE %s OR user_name LIKE %s<>%<25>totalz<6C>SELECT user_id, user_name, is_signature, create_time, update_time FROM user_sign WHERE user_id LIKE %s OR user_name LIKE %s ORDER BY create_time DESC LIMIT %s OFFSET %s<>'SELECT COUNT(*) as total FROM user_signz}SELECT user_id, user_name, is_signature, create_time, update_time FROM user_sign ORDER BY create_time DESC LIMIT %s OFFSET %s<>rhrcrd<00>datarJ)
r2rbr)r*r+rUr$rr>r%) rcrdrer&<00>offsetr)rh<00>rowsr'rrr ra)s6  
<16> <1A>
 <06>&rac Cs<>t<00>}z<>|d|}|rj|<03>dd|<02>d<03>d|<02>d<03>f<02><02><02>}|d}|<03>dd|<02>d<03>d|<02>d<03>||f<04>}n&|<03>d<06><01><02>}|d}|<03>d||f<02>}dd <09>|<07><03>D<00>}||||d
<EFBFBD>W|<03><04>S|<03><04>0dS) Nr_zPSELECT COUNT(*) as total FROM user_sign WHERE user_id LIKE ? OR user_name LIKE ?rgrhz<>SELECT user_id, user_name, is_signature, create_time, update_time FROM user_sign WHERE user_id LIKE ? OR user_name LIKE ? ORDER BY create_time DESC LIMIT ? OFFSET ?riz{SELECT user_id, user_name, is_signature, create_time, update_time FROM user_sign ORDER BY create_time DESC LIMIT ? OFFSET ?cSsg|] }t|<01><01>qSrrWrXrrr r[]r\z%_sqlite_query_all.<locals>.<listcomp>rj)r6r*r+rUr.) rcrdrer&rlZ count_rowrhr)rmrrr rbHs0 <16><1A><06><08>rbcCs$tdkrt||||<03>St||||<03>SrD)r9<00>_mysql_insert_record<72>_sqlite_insert_record<72>rHrS<00>
sign_image<EFBFBD> is_signaturerrr <00> insert_recordcsrsc
Cst<00>}|st||||<03>SzX|<04><02><00>$}|<05>d||||f<04>Wd<00>n1sL0Y|<04><04>t<05>d||<01>WdSty<>}z`|<04><08>dt |<06>vs<>dt |<06>vr<>t<05>
d|t |<06><01>t d|<00>d<08><03><01>t<05>
d t |<06><01><00>WYd}~nd}~0|<04><08><00>Yn0dS)
Nz\INSERT INTO user_sign (user_id, user_name, sign_image, is_signature) VALUES (%s, %s, %s, %s)u-新增记录(MySQL): user_id=%s, user_name=%sTzDuplicate entryZPRIMARY<52>0新增记录失败(主键冲突): user_id=%s, %s<>
人员ID '<27> ' 已存在uMySQL 新增记录失败: %s) r2ror)r*r,rr-r$rCr%r><00>
ValueError)rHrSrqrrr&r)r'rrr rnis,

<EFBFBD>"rnc
Cs<>t<00>}z<>z:|<04>d||||f<04>|<04><02>t<03>d||<01>WW|<04><05>dStjy<>}z6|<04><08>t<03> d|t
|<05><01>t d|<00>d<06><03><01>WYd}~nFd}~0t y<>}z&|<04><08>t<03> dt
|<05><01><00>WYd}~n
d}~00W|<04><05>n
|<04><05>0dS)NzXINSERT INTO user_sign (user_id, user_name, sign_image, is_signature) VALUES (?, ?, ?, ?)u.新增记录(SQLite): user_id=%s, user_name=%sTrtrurvu新增记录失败: %s) r6r*r,rr-r.r5ZIntegrityErrorrCr>r%rwr$)rHrSrqrrr&r'rrr ro<00>s(
<EFBFBD>
<08>$rocCs$tdkrt||||<03>St||||<03>SrD)r9<00>_mysql_update_record<72>_sqlite_update_recordrprrr <00> update_record<72>srzc
Cs*t<00>}|st||||<03>Sz<>g}g}|dur>|<05>d<01>|<06>|<01>|durZ|<05>d<02>|<06>|<02>|durv|<05>d<03>|<06>|<03>|s<>WdS|<06>|<00>|<04><03><00>*}|<07>dd<06>|<05><01>d<07>|<06>Wd<00>n1s<>0Y|<04><06>t<07>d|<00>WdSt <09>y$}z&|<04>
<EFBFBD>t<07> d t |<08><01><00>WYd}~n
d}~00dS)
Nzuser_name = %szsign_image = %szis_signature = %sT<73>UPDATE user_sign SET <20>, z WHERE user_id = %su更新记录(MySQL): user_id=%suMySQL 更新记录失败: %s) r2ry<00>appendr)r*rr,rr-r$rCr>r%) rHrSrqrrr&<00>sets<74>paramsr)r'rrr rx<00>s6







8 rxc
Cs(t<00>}<04>zz<>g}g}|dur0|<05>d<01>|<06>|<01>|durL|<05>d<02>|<06>|<02>|durh|<05>d<03>|<06>|<03>|s|WW|<04><02>dS|<05>d<05>|<06>|<00>|<04>dd<07>|<05><01>d<08>|<06>|<04><05>t<06>d |<00>WW|<04><02>dSt<08>y }z&|<04> <09>t<06>
d
t |<07><01><00>WYd}~n
d}~00W|<04><02>n
|<04><02>0dS) Nz user_name = ?zsign_image = ?zis_signature = ?Tz)update_time = datetime('now','localtime')r{r|z WHERE user_id = ?u 更新记录(SQLite): user_id=%su更新记录失败: %s) r6r}r.r*rr,rr-r$rCr>r%)rHrSrqrrr&r~rr'rrr ry<00>s<





 <08>

 <08>rycCstdkrt|<00>St|<00>SrD)r9<00>_mysql_delete_record<72>_sqlite_delete_recordrGrrr <00> delete_record<72>sr<>c
Cs<>t<00>}|st|<00>SzP|<01><02><00>}|<02>d|f<01>Wd<00>n1s@0Y|<01><04>t<05>d|<00>WdSty<>}z&|<01><08>t<05> dt
|<03><01><00>WYd}~n
d}~00dS)Nz(DELETE FROM user_sign WHERE user_id = %su删除记录(MySQL): user_id=%sTuMySQL 删除记录失败: %s) r2r<>r)r*r,rr-r$rCr>r%)rHr&r)r'rrr r<><00>s
, r<>c
Cs<>t<00>}z~z2|<01>d|f<01>|<01><02>t<03>d|<00>WW|<01><05>dStyx}z&|<01><07>t<03>dt |<02><01><00>WYd}~n
d}~00W|<01><05>n
|<01><05>0dS)Nz'DELETE FROM user_sign WHERE user_id = ?u 删除记录(SQLite): user_id=%sTu删除记录失败: %s)
r6r*r,rr-r.r$rCr>r%)rHr&r'rrr r<><00>s <08>r<>cCstdkrt|<00>St|<00>SrD)r9<00>_mysql_get_image_by_user_id<69>_sqlite_get_image_by_user_idrGrrr <00>get_image_by_user_id<69>sr<>c
Cs<>t<00>}|st|<00>SzP|<01><02><00>4}|<02>d|f<01>|<02><04>}|r<|ndWd<00>WS1sV0YWn<ty<>}z$t<06>dt|<04><01>t|<00>WYd}~Sd}~00dS)NzASELECT sign_image, is_signature FROM user_sign WHERE user_id = %s<>MySQL 查询图片失败: %s) r2r<>r)r*r+r$rr>r%rKrrr r<>s
0r<>cCsFt<00>}z0|<01>d|f<01>}|<02><02>}|r*t|<03>ndW|<01><04>S|<01><04>0dS)Nz@SELECT sign_image, is_signature FROM user_sign WHERE user_id = ?rMrOrrr r<>s<08>r<>cCstdkrt|<00>St|<00>SrD)r9<00>_mysql_get_image_by_user_name<6D>_sqlite_get_image_by_user_namerRrrr <00>get_image_by_user_namesr<>c
Cs<>t<00>}|st|<00>SzD|<01><02><00>(}|<02>d|f<01>|<02><04>Wd<00>WS1sJ0YWn<ty<>}z$t<06>dt|<03><01>t|<00>WYd}~Sd}~00dS)NzWSELECT sign_image, is_signature, user_id, user_name FROM user_sign WHERE user_name = %sr<73>) r2r<>r)r*rUr$rr>r%rVrrr r<>#s
,r<>cCs@t<00>}z*|<01>d|f<01>}dd<03>|<02><02>D<00>W|<01><03>S|<01><03>0dS)NzVSELECT sign_image, is_signature, user_id, user_name FROM user_sign WHERE user_name = ?cSsg|] }t|<01><01>qSrrWrXrrr r[4r\z2_sqlite_get_image_by_user_name.<locals>.<listcomp>r]r^rrr r<>0s<08>r<>cCstpdS)N<>unknown)r9rrrr <00>get_active_db_type9sr<>)F)r_r`N)r_r`N)r_r`N)r)r)r)NNN)NNN)NNN)-r5rZloggingrZ getLogger<65>__name__rr9r0r
rr(r/r2r6r:rArBr=r?rIrErFrTrPrQrfrarbrsrnrorzrxryr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rrrr <00><module>sT 
 %

3