yj
2026-03-31 4becf7b5eba5de2d9889f379eb88aeb6cb16f760
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
§
Þ+i.ãó–—ddlZddlZejej¬¦«eje¦«ZGd„d¦«ZGd„d¦«ZdS)éN)Úlevelcó@—eZdZdZed„¦«Zedd„¦«ZdS)ÚContentTypeDAOuContentType数据访问对象c    ó–—| ¦«}|st d¦«dS    | ¦«5}| d¦«}| dd¦« ¦«}| dd¦« ¦«}|r|s    ddd¦«dS|r]d    }| ||f¦«| ¦«}|r d
}    | |    |||f¦«|}
d } n…    ddd¦«d Sd }| ||f¦«| ¦«}|r%d}    | |    ||f¦«|d}
d } n#d} | | ||f¦«|j}
d} t     d|s|rdnd›d|
›d|›¦«| |
||dœdfcddd¦«S#1swxYwYdS#tj $r(} t d| ›¦«Yd} ~ dSd} ~ wt$r(} t d| ›¦«Yd} ~ dSd} ~ wwxYw)u:保存ContentType,支持通过ID更新或创建新记录õ数据库连接失败©NrÚidÚcodeÚÚnameN)Nu代码和名称是必需的ú)SELECT id FROM content_type WHERE id = %sz:UPDATE content_type SET code = %s, name = %s WHERE id = %suContentType更新成功©Nu指定的ID不存在z+SELECT id FROM content_type WHERE code = %sz1UPDATE content_type SET name = %s WHERE code = %sz5INSERT INTO content_type (code, name) VALUES (%s, %s)uContentType保存成功z ContentType õ    å·²æ›´æ–°õ    å·²ä¿å­˜õ,ID: u ,代码: )Úmessager    r
r u+保存ContentType时数据完整性错误: )Nu代码已存在u"保存ContentType操作时出错: ©Nu内部服务器错误) Úget_connectionÚloggerÚerrorÚcursorÚgetÚstripÚexecuteÚfetchoneÚ    lastrowidÚinfoÚpymysqlÚIntegrityErrorÚ    Exception)ÚdataÚ    db_configÚ
connectionrÚ contenttyper
r Ú    check_sqlÚexisting_recordÚ
update_sqlÚ    record_idrÚ
insert_sqlÚes              ú!D:\project\python\AI_Admin\dao.pyÚsave_contenttypezContentTypeDAO.save_contenttype s~€ð×-Ò-Ñ/Ô/ˆ
Øð    1Ý LŠLÐ0Ñ 1Ô 1Ð 1Ø0Ð0ð@    1Ø×"Ò"Ñ$Ô$ð8 ¨Ø"Ÿhšh t™nœn Ø—x’x ¨Ñ+Ô+×1Ò1Ñ3Ô3Ø—x’x ¨Ñ+Ô+×1Ò1Ñ3Ô3àð? 4ð?Ø>ð 8 ð8 ð8 ñ8 ô8 ð8 ð8 ð8 ðð%<ð!LIØ—N’N 9¨{¨nÑ=Ô=Ð=Ø&,§o¢oÑ&7Ô&7Oà&ð
<ðYð#🚠z°D¸$À Ð3LÑMÔMÐMØ$/˜    Ø";˜˜ð <ð38 ð8 ð8 ñ8 ô8 ð8 ð8 ð8 ð8!NIØ—N’N 9¨t¨gÑ6Ô6Ð6Ø&,§o¢oÑ&7Ô&7Oà&ð <à%X˜
ØŸš z°D¸$°<Ñ@Ô@Ð@Ø$3°DÔ$9˜    Ø";˜˜ðTð#🚠z°D¸$°<Ñ@Ô@Ð@Ø$*Ô$4˜    Ø";˜å— ’ ðG°+Ð#aÀÐ#a ; ;ÐVaðGðGÐjsðGðGðAEðGðGñôðð
 'Ø#ؠؠ𠠠 ðð
ð ðg8 ð8 ð8 ð8 ñ8 ô8 ð8 ð8 ð8 ð8 ð8 ð8 øøøð8 ð8 ð8 ð8 ð8 ð8 øõtÔ%ð    +ð    +ð    +Ý LŠLÐJÀqÐJÐJÑ KÔ KÐ KØ*Ð*Ð*Ð*Ð*Ð*øøøøÝð    1ð    1ð    1Ý LŠLÐA¸aÐAÐAÑ BÔ BÐ BØ0Ð0Ð0Ð0Ð0Ð0øøøøð    1øøøsb´G!ÁA+GÂ3 G!ÃAGÄ G!ÄB(GÇ G!ÇGÇG!ÇGÇG!Ç!IÇ0HÈ IÈ IÉINcó —| ¦«}|st d¦«dS    | ¦«5}|r'd}| |t |¦«f¦«n=|rd}| ||f¦«n!d}|r|d|›z }| |¦«| ¦«}t dt|¦«›d¦«|t|¦«d    œd
fcd
d
d
¦«S#1swxYwYd
S#t$r(}t d |›¦«Yd
}~d Sd
}~wwxYw) u获取ContentTyperrzMSELECT id, code, name, created_at, updated_at FROM content_type WHERE id = %szOSELECT id, code, name, created_at, updated_at FROM content_type WHERE code = %szXSELECT id, code, name, created_at, updated_at FROM content_type ORDER BY created_at DESCú LIMIT õ
检索到 u æ¡ContentType记录©r!ÚcountNu"检索ContentType操作时出错: r)
rrrrrÚintÚfetchallrÚlenr )    r$r
Úlimitr"r#rÚsqlÚresultsr*s             r+Úget_contenttypezContentTypeDAO.get_contenttypeWsâ€ð×-Ò-Ñ/Ô/ˆ
Øð    1Ý LŠLÐ0Ñ 1Ô 1Ð 1Ø0Ð0ð    1Ø×"Ò"Ñ$Ô$ð F¨Øð (àiCØ—N’N 3­¨[Ñ)9Ô)9Ð(;Ñ<Ô<Ð<Ð<Øð    (àkCØ—N’N 3¨¨Ñ0Ô0Ð0Ð0ðuCØð1ØÐ0¨Ð0Ð0Ñ0˜Ø—N’N 3Ñ'Ô'Ð'à Ÿ/š/Ñ+Ô+å— ’ ÐL­¨W©¬ÐLÐLÐLÑMÔMÐMà 'µ#°g±,´,Ð?Ð?ÀÐEð) Fð Fð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Føõ,ð    1ð    1ð    1Ý LŠLÐA¸aÐAÐAÑ BÔ BÐ BØ0Ð0Ð0Ð0Ð0Ð0øøøøð    1øøøs<´DÁB9DÄ DÄDÄDÄDÄDÄ
E Ä%EÅE ©NNNN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú staticmethodr,r8©ór+rr    sW€€€€€Ø'Ð'àðH1ðH1ñ„\ðH1ðTð 1ð 1ð 1ñ„\ð 1ð 1ð 1r@rcóV—eZdZdZed„¦«Zedd„¦«Zed„¦«ZdS)Ú
ContentDAOuContent数据访问对象c    ó0—| ¦«}|st d¦«dS    | ¦«5}| d¦«}| dd¦«}| dd¦« ¦«}| dd¦« ¦«}||r|s    ddd¦«d    Sd
}| ||f¦«| ¦«}    |    s    ddd¦«d S|r^d }
| |
|f¦«| ¦«} | r!d } | | ||||f¦«|} d}n2    ddd¦«dSd}| ||||f¦«|j} d}t     d|rdnd›d| ›d|›¦«|| |||dœdfcddd¦«S#1swxYwYdS#t$r(}t d|›¦«Yd}~dSd}~wwxYw)u6保存Content,支持通过ID更新或创建新记录rrr    ÚtypeNÚquestionr Úanswer)Nu$类型、问题和答案是必需的r )Nu指定的类型ID不存在ú$SELECT id FROM content WHERE id = %szFUPDATE content SET type = %s, question = %s, answer = %s WHERE id = %suContent更新成功rz@INSERT INTO content (type, question, answer) VALUES (%s, %s, %s)uContent保存成功zContent rrru ,类型ID: )rr    rDrErFu保存Content操作时出错: r) rrrrrrrrrrr )r!r"r#rÚ
content_idÚ content_typerErFÚcheck_type_sqlÚ type_existsr%r&r'r(rr)r*s                 r+Ú save_contentzContentDAO.save_content~s/€ð×-Ò-Ñ/Ô/ˆ
Øð    1Ý LŠLÐ0Ñ 1Ô 1Ð 1Ø0Ð0ð9    1Ø×"Ò"Ñ$Ô$ð4 ¨Ø!ŸXšX d™^œ^
Ø#Ÿxšx¨°Ñ5Ô5 ØŸ8š8 J°Ñ3Ô3×9Ò9Ñ;Ô;ØŸš (¨BÑ/Ô/×5Ò5Ñ7Ô7àÐ'¨xÐ'¸vÐ'ØGð4 ð4 ð4 ñ4 ô4 ð4 ð4 ð4 ð"MØ—’˜~° ¨Ñ?Ô?Ð?Ø$ŸošoÑ/Ô/ à"ð>Ø=ð4 ð4 ð4 ñ4 ô4 ð4 ð4 ð4 ð"ð4ð!GIØ—N’N 9¨z¨mÑ<Ô<Ð<Ø&,§o¢oÑ&7Ô&7Oà&ð
<à%m˜
ØŸšØ&¨°xÀÈÐ(Tñôðð%/˜    Ø"7˜˜ð <ðE4 ð4 ð4 ñ4 ô4 ð4 ð4 ð4 ðJ"dJØ—N’N :° ¸hÈÐ/OÑPÔPÐPØ &Ô 0IØ3Gå— ’ Øx¨jÐI˜{˜{¸kÐxÐxÐR[ÐxÐxÐjvÐxÐxñôðð
 'Ø#Ø(Ø (Ø$ð ðð ð ð]4 ð4 ð4 ð4 ñ4 ô4 ð4 ð4 ð4 ð4 ð4 ð4 øøøð4 ð4 ð4 ð4 ð4 ð4 øõlð    1ð    1ð    1Ý LŠLÐ=¸!Ð=Ð=Ñ >Ô >Ð >Ø0Ð0Ð0Ð0Ð0Ð0øøøøð    1øøøsb´G#ÁBGà G#Ã0GÄ G#ÄAGÅ( G#Å5AGÇ     G#ÇGÇG#ÇGÇG#Ç#
HÇ-HÈHNcóH—| ¦«}|st d¦«dS    | ¦«5}|rd}| ||f¦«nG|r$d}|r|d|›z }| ||f¦«n!d}|r|d|›z }| |¦«| ¦«}t dt|¦«›d¦«|t|¦«d    œd
fcd
d
d
¦«| ¦«S#1swxYwYnI#t$r<}t d |›¦«Yd
}~| ¦«d Sd
}~wwxYw    | ¦«d
S#| ¦«wxYw) u 获取Contentrra
                    SELECT c.id, c.type, ct.code, ct.name, c.question, c.answer, c.created_at, c.updated_at
                    FROM content c
                    LEFT JOIN content_type ct ON c.type = ct.id
                    WHERE c.id = %s
                    a4
                    SELECT c.id, c.type, ct.code, ct.name, c.question, c.answer, c.created_at, c.updated_at
                    FROM content c
                    LEFT JOIN content_type ct ON c.type = ct.id
                    WHERE c.type = %s
                    ORDER BY c.created_at
                    r.a
                    SELECT c.id, c.type, ct.code, ct.name, c.question, c.answer, c.created_at, c.updated_at
                    FROM content c
                    LEFT JOIN content_type ct ON c.type = ct.id
                    ORDER BY c.created_at
                    r/u æ¡Content记录r0Nu检索Content操作时出错: r)
rrrrrr3rr4Úcloser )    rHrIr5r"r#rr6r7r*s             r+Ú get_contentzContentDAO.get_contentÂsX€ð×-Ò-Ñ/Ô/ˆ
Øð    1Ý LŠLÐ0Ñ 1Ô 1Ð 1Ø0Ð0ð-    Ø×"Ò"Ñ$Ô$ð& F¨Øð(ðCð —N’N 3¨¨ Ñ6Ô6Ð6Ð6Ø!ð(ðCðð1ØÐ0¨Ð0Ð0Ñ0˜Ø—N’N 3¨¨Ñ8Ô8Ð8Ð8ðCð ð1ØÐ0¨Ð0Ð0Ñ0˜Ø—N’N 3Ñ'Ô'Ð'à Ÿ/š/Ñ+Ô+å— ’ ÐH­¨W©¬ÐHÐHÐHÑIÔIÐIà 'µ#°g±,´,Ð?Ð?ÀÐEðM& Fð& Fð& Fð& Fñ& Fô& Fð& FðX × Ò Ñ Ô Ð Ð ðY& Fð& Fð& Fð& Føøøð& Fð& Fð& Fð& Fð& FøõPð    1ð    1ð    1Ý LŠLÐ=¸!Ð=Ð=Ñ >Ô >Ð >Ø0Ð0Ð0Ð0à × Ò Ñ Ô Ð Ð Ð øøøøð        1øøøðQ& FðX × Ò Ñ Ô Ð Ð Ð øˆJ× Ò Ñ Ô Ð Ð øøøsT´D+ÁB6DÃ> D+ÄD#Ä#D+Ä&D#Ä'D+Ä*F Ä+
E1Ä5E,ÅF Å,E1Å1F Æ F!có6—| ¦«}|st d¦«dS    | ¦«5}d}| ||f¦«| ¦«}|s"    ddd¦«| ¦«dSd}| ||f¦«|jdkrX| ¦«t     d|›¦«d    |d
œdfcddd¦«| ¦«S| 
¦«    ddd¦«| ¦«d S#1swxYwYn“#t$r†}t d |›¦«    | 
¦«n4#t$r'}t d |›¦«Yd}~nd}~wwxYwYd}~| ¦«dSd}~wwxYw    | ¦«dS#| ¦«wxYw)u根据ID删除ContentrrrGNrz!DELETE FROM content WHERE id = %sruContent已删除,ID: uContent删除成功)rr    )Nu删除操作失败u删除Content操作时出错: u回滚操作时出错: r) rrrrrrrNÚrowcountÚcommitrÚrollbackr )    rHr"r#rr%r&Ú
delete_sqlr*Úrollback_errors             r+Údelete_contentzContentDAO.delete_contentùs߀ð×-Ò-Ñ/Ô/ˆ
Øð    1Ý LŠLÐ0Ñ 1Ô 1Ð 1Ø0Ð0ð    Ø×"Ò"Ñ$Ô$ð 6¨àB    Ø—’˜y¨:¨-Ñ8Ô8Ð8Ø"(§/¢/Ñ"3Ô"3à&ð8Ø7ð 6ð 6ð 6ñ 6ô 6ð 6ð: × Ò Ñ Ô Ð Ð Ð ð'A
Ø—’˜z¨J¨=Ñ9Ô9Ð9à”? QÒ&Ð&Ø×%Ò%Ñ'Ô'Ð'Ý—K’KРF¸*РFРFÑGÔGÐGØ'<ÀJÐOÐOÐQUÐUð! 6ð 6ð 6ð 6ñ 6ô 6ð 6ð: × Ò Ñ Ô Ð Ð ð×'Ò'Ñ)Ô)Ð)Ø5ð' 6ð 6ð 6ñ 6ô 6ð 6ð: × Ò Ñ Ô Ð Ð Ð ð; 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6øõ*ð    1ð    1ð    1Ý LŠLÐ=¸!Ð=Ð=Ñ >Ô >Ð >ð IØ×#Ò#Ñ%Ô%Ð%Ð%øÝð Ið Ið IÝ— ’ ÐG°~ÐGÐGÑHÔHÐHÐHÐHÐHÐHÐHøøøøð Iøøøà0Ð0Ð0Ð0à × Ò Ñ Ô Ð Ð Ð øøøøð    1øøøð+ 6ð: × Ò Ñ Ô Ð Ð Ð øˆJ× Ò Ñ Ô Ð Ð øøøs–´EÁ1E Á9 EÂAE Ã5 EÄE Ä+ EÅ EÅEÅEÅEÅHÅ
G(Å"G#ÆFÆG#Æ
GÆGÆ<G#ÇGÇG#Ç    HÇ#G(Ç(HÈHr9)r:r;r<r=r>rLrOrVr?r@r+rBrB{ss€€€€€Ø#Ð#àðA1ðA1ñ„\ðA1ðFð4ð4ð4ñ„\ð4ðlð%ð%ñ„\ð%ð%ð%r@rB)    rÚloggingÚ basicConfigÚINFOÚ    getLoggerr:rrrBr?r@r+ú<module>r[s°ðØ€€€Ø€€€ð€Ô˜'œ,Ð'Ñ'Ô'Ð'Ø    ˆÔ    ˜8Ñ    $Ô    $€ðo1ðo1ðo1ðo1ðo1ño1ôo1ðo1ðddðdðdðdðdñdôdðdðdðdr@