agronholm / agronholm/sqlacodegen

SQLModel does not generate many-to-many classes correctly

オープン
#405 コメント 8 件 リアクション 3 件 担当者 1 名 @sheinbergon が担当を希望しています GitHub で見る
bug
主要言語
Python
スター
2.4k
フォーク
284
平均マージ
2日 1時間
マージ済み PR(30日)
1

説明

### Things to check first

- [x] I have searched the existing issues and didn't find my bug already reported there

- [x] I have checked that my bug is still present in the latest release

### Sqlacodegen version

3.0.0

### SQLAlchemy version

2.0.38

### RDBMS vendor

PostgreSQL

### What happened?

Ran the command
```
sqlacodegen postgresql://postgres:postgres@localhost:5432/sentimental --generator sqlmodels --outfile data_pipelines/lib/models/pg_ext_sqlm.py
```
All tables generated correctly but the many-to-many class was not correct. The base metaclass was missing after the first parmeter **property_lead_link**.
```
t_property_lead_link = Table(
'property_lead_link', ,
Column('property_lead_id', Integer, primary_key=True, nullable=False),
Column('lead_link_id', Integer, primary_key=True, nullable=False),
ForeignKeyConstraint(['lead_link_id'], ['property_link.id'], name='fk_property_lead_link_link'),
ForeignKeyConstraint(['property_lead_id'], ['property_lead.id'], name='fk_property_lead_link_lead'),
PrimaryKeyConstraint('property_lead_id', 'lead_link_id', name='pk_property_lead_link')
)
```

### Database schema for reproducing the bug

```
CREATE TABLE public.property_lead (
id serial NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
);

ALTER TABLE public.property_lead ADD CONSTRAINT pk_property_leads PRIMARY KEY (id);

CREATE TABLE public.property_link (
id serial NOT NULL,
created_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP,
);

ALTER TABLE public.property_link ADD CONSTRAINT pk_lead_links PRIMARY KEY (id);

CREATE TABLE public.property_lead_link (
property_lead_id integer NOT NULL,
lead_link_id integer NOT NULL
);

ALTER TABLE public.property_lead_link ADD CONSTRAINT pk_property_lead_link PRIMARY KEY (property_lead_id, lead_link_id);
ALTER TABLE public.property_lead_link ADD CONSTRAINT fk_property_lead_link_lead FOREIGN KEY (property_lead_id) REFERENCES public.property_lead(id);
ALTER TABLE public.property_lead_link ADD CONSTRAINT fk_property_lead_link_link FOREIGN KEY (lead_link_id) REFERENCES public.property_link(id);
```

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。