使用正则表达式解析SQL模式文件(python)

2024-10-04 03:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在这里找到一个合适的答案,但我正在挣扎。在

我有档案

create table "user".tablename 
  (
    columna char(4) not null ,
    columnb varchar(32),
    columnc varchar(16),
    updated datetime year to second 
        default current year to second not null ,
    edited_by varchar(18,10) 
        default current_user not null 
  );

create unique index "user".xpktablename on "user".tablename 
    (columna) using btree ;
alter table "user".tablename add constraint primary key 
    (columna) constraint "user".xpktablename  ;

现在我已经编写了python来确定它在文件中的位置(创建一个表、触发器、索引等)。但是,我不知道怎么把柱子拔出来。在

本质上,我所做的是尝试从模式转储构建SQLAlchemy类:

因此,这将变成:

^{pr2}$

如上所述,我现在不关心违约——这是另一个值得单独提问的复杂问题。在

我不能得到的是分析带括号的列行:varchar(xxx)

我在寻找([datetime-year-to-second | integer | smallint]),但我不知道如何在文本括号内创建subregex来查找(xxx)?在

我想这并不是太复杂,我只是不太了解正则表达式。在

任何帮助或推动在正确的方向将不胜感激。在

如果有帮助的话,这就是我目前正在努力解决的问题:

column = re.search("^    ([a-zA-Z0-9_]{1,})\s([serial|integer|smallint|datetime year to second|date])")

Tags: todefaultdatetimecreatetablenotcurrentyear