Files
ai-g3sb-backman2.0/backend/schema/__pycache__/loader.cpython-312.pyc
T

130 lines
13 KiB
Plaintext
Raw Normal View History

2026-04-10 16:52:07 +08:00
Ë
ÔŸØi,ãóÆ—dZddlZddlZddlmZddlmZmZmZm Z ddl
Z
ddl m Z m
Z
mZmZe
j e«ZGd„d«Zd ed
ed efd „Z dd
edeed efd„Zy)u:
Schema加载器 - 解�JSON/DDL格�的数�库Schema
éN)ÚPath)ÚListÚDictÚOptionalÚTupleé)ÚTableÚColumnÚ
ForeignKeyÚDatabaseSchemacóº—eZdZdZddefd„Z ddedeedefd„Zd ed
edefd „Z d e
de fd
„Z dede
efd„Zdede
efd„Zde
ede
efd„Zde
efd„Zy)Ú SchemaLoaderu(Schema加载器 - 支æŒ�JSONå’ŒDDLæ ¼å¼�NÚ
schema_dircó8—|rt|«|_yd|_y)uj
�始化Schema加载器
Args:
schema_dir: Schema文件目录路径
N)rr)Úselfrs úJC:\Users\24019\Desktop\backman-camel\text2sql_agent_camel\schema\loader.pyÚ__init__zSchemaLoader.__init__s€ñ/9œ$˜zÓ*ˆ�¸dˆ�óÚ json_pathÚg3sb_meta_pathÚreturnc óF—t|«}|j«std|›�«‚t|dd¬«5}t j
|«}ddd«j
d|j«}|j
d«}|j
d«}t|t«�rI|�rFi} |rtt|«}
|
j«rCt|
dd¬«5} t j
| «} ddd« j
di«xsi} ntjd |«g}
|j«D]Œ\}}t|t«sŒd}| r3t| j
|«t«r| |j
d
«}|j|«}|
j!t#||||j%|«g¬ ««ŒŽtj'd |t)|
««t+||
¬
«St|t,«rR|rP|D�cgc]}|j/|«‘Œ}
}tj'd|›dt)|
«›d�«t+||
¬
«Sg}
tj'd|›dt)|
«›d�«t+||
¬
«S#1swY�Œ8xYw#1swY�Œ¨xYwcc}w)u.
从JSON文件加载Schema
JSON格�示例:
{
"database": "db_name",
"tables": [
{
"name": "table1",
"comment": "表�述",
"columns": [
{"name": "col1", "type": "INT", "comment": "...", "nullable": false}
],
"primary_keys": ["col1"],
"foreign_keys": [
{"columns": ["col2"], "ref_table": "table2", "ref_columns": ["col1"]}
]
}
]
}
亦支� G3SB table_structure.json:顶层为 ``schemas`` 字典(与 ``tables`` 数组二选一
时优先使用�空的 ``schemas``)。�选 ``g3sb_meta_path`` 指� table_meta.json
以�并表级注释。
Args:
json_path: JSON文件路径
g3sb_meta_path: �选,G3SB table_meta.json(� tables.{表�}.comment)
Returns:
DatabaseSchema对象
uSchema文件ä¸�存在: Úrúutf-8©ÚencodingNÚdatabaseÚschemasÚtablesu2G3SB meta 文件ä¸�存在,将跳过表注释: %sÚcomment©Únamer ÚcolumnsÚ primary_keysÚ foreign_keysu6[OK] 加载Schema完æˆ�(G3SB schemas): %s, å…±%d张表©r"ru[OK] 加载Schema完æˆ�: u, å…±õ张表)rÚexistsÚFileNotFoundErrorÚopenÚjsonÚloadÚgetÚstemÚ
isinstanceÚdictÚis_fileÚloggerÚwarningÚitemsÚstrÚ_parse_g3sb_table_structureÚappendr Ú_extract_primary_keysÚinfoÚlenr ÚlistÚ _parse_table)rrrÚpathÚfÚdataÚdb_nameÚ schemas_mapÚ tables_dataÚ
table_metaÚmpÚmfÚ meta_datarÚ
table_nameÚ
structure_strr r#Ú
table_datas rÚload_from_jsonzSchemaLoader.load_from_jsonsR€ôF�I‹ˆØ�{‰{Œ}Ü#Ð&=¸i¸[Ð$IÓJÐ Jä
�$˜ gÕ
.°!Ü—9‘9˜Q“<ˆD÷/ð—(‘(˜: t§y¡yÓ1ˆà—h‘h˜yÓ)ˆ Ø—h‘h˜xÓ(ˆ ô �k¤4Õ (ª[Ø!ˆJÙܘ.Ó)�Ø—:‘:”<ܘb #°Õ8¸BÜ$(§I¡I¨b£M˜ ÷9à!*§¡¨x¸Ó!<Ò!BÀ‘Jä—N‘NØLÈnôðˆFØ-8×->Ñ->Ö-@Ñ)�
˜MÜ! -´Ô5ØØ�Ù¤*¨Z¯^©^¸JÓ-GÌÔ"NØ(¨Ñ4×8Ñ8¸ÓC�GØ×:Ñ:¸=ÓI�Ø—
‘
ÜØ'Ø 'Ø 'Ø%)×%?Ñ%?ÀÓ%HØ%'ô õð.Aô
�K‰KØHÈ'ÔSVÐW]ÓS^ô
ô" w°vÔ>Ð >ä �k¤4Ô (©[ÙFQÓRÁk¸
�d×'Ñ'¨
Õ3ÀkˆFÐRÜ �K‰KÐ3°G°9¸EÄ#ÀfÃ+ÀÈfÐUÔ VÜ! w°vÔ>Ð >àˆÜ� ‰ Ð/°¨y¸¼cÀ&»k¸]È&ÐQÔRÜ 7°6Ô:Ð:÷i/Ñ
.ú÷9Ñ8üò>Ss¸JÃJÈJÊJÊJÚ meta_pathÚstructure_pathc ó‚—t|dd¬«5}tj|«}ddd«jdi«}t|dd¬«5}tj|«}ddd«jdi«}g}|j «D]g\} }
|j| i«jd«} |j |
«} t
| | | |j| «g¬«}
|j|
«Œitjd t|«›d
�«td |¬ «S#1swY�ŒxYw#1swYŒÓxYw)
u
加载G3SB系统的数�字典格�(两个JSON文件)
Args:
meta_path: table_meta.json路径(表注释)
structure_path: table_structure.json路径(表结构)
Returns:
DatabaseSchema对象
rrrNrrr r!u![OK] 加载G3SB Schema完æˆ�: å…±r'ÚG3SB_DBr&)
r*r+r,r-r4r6r r8r7r2r9r:r )rrKrLr>rFrCÚstructure_dataÚtable_structuresrrGrHr r#Útables rÚload_from_g3sb_formatz"SchemaLoader.load_from_g3sb_formatys#€ô�)˜S¨7Õ
3°qÜŸ ™  !› ˆI÷4à—]‘] 8¨RÓ0ˆ
ô�. #°Õ
8¸AÜ!ŸY™Y q›\ˆN÷9à)×-Ñ-¨i¸Ó<ÐðˆØ)9×)?Ñ)?Ö)AÑ %ˆJ˜
Ø —n‘n Z°Ó4×8Ñ8¸ÓCˆGð×6Ñ6°}ÓEˆGäØØØØ!×7Ñ7¸Ó@Øô ˆEð
�M‰M˜%Õ ð*Bô � ‰ Ð7¼¸F» °}ÀFÐKÔLÜ 9°VÔ<Ð<÷94Ñ
3ú÷
9Ð
8ús�D(Á
D5Ä(D2Ä5D>r?c óÆ—g}|jdg«D]X}t|d|d|jd«|jdd«|jdd«¬ «}|j|«ŒZg}|jd
g«D]*}t|d|d |d ¬
«}|j|«Œ,t |d|jd«||jdg«|¬«S)uè§£æž�å�•表JSONæ•°æ�®r#r"Útyper ÚnullableTÚis_primary_keyF)r"Ú data_typer rUrVr%Ú ref_tableÚ ref_columns)r#rXrYr$r!)r-r
r7r r )rr?r#Úcol_dataÚcolr%Úfk_dataÚfks rr<zSchemaLoader._parse_table£sñ€àˆØŸ™ ¨BÖ/ˆHÜØ˜fÑ%Ø" 6Ñ*Ø Ÿ ™  YÓ/Ø!Ÿ™ j°$Ó7Ø'Ÿ|™|Ð,<¸eÓDô ˆCð
�N‰N˜3Õ ð0ðˆ Ø—x‘x °Ö3ˆGÜØ  Ñ*Ø! +Ñ.Ø# MÑ2ôˆBð
× Ñ  Õ #ð
4ôØ�f‘Ø—H‘H˜YÓ'ØØŸ™ .°"Ó5Ø%ô