我试图在这里找到合适的答案,但我很挣扎。
我有一个文件
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类:
所以,这将成为:
class tablename(Base):
__tablename__ = 'tablename'
columna = Column(String, primary_key = True)
columnb = Column(String, nullable = True)
columnc = Column(String, nullable = True)
updated = Column(DateTime, nullable = False)
edited_by = Column(String, nullable = False)
Index.....
如上所述,我现在不关心默认值 - 这是另一个值得单独问题的复杂性。
我无法得到的是用括号分析列线:varchar(xxx)
我一直在寻找([datetime year to second | integer | smallint]),但我不知道如何在查找(xxx)的文字括号内做一个subregex?
我猜这不是太复杂,我只是不太了解正则表达式。
任何帮助或推动正确的方向都将受到赞赏。
如果它有所帮助,那就是我现在正在尝试的工作:
column = re.search("^ ([a-zA-Z0-9_]{1,})\s([serial|integer|smallint|datetime year to second|date])")