[英]SQLAlchemy + Postgres (print created types, e.g. enum types)
我希望能夠獲得有關在SQLAlchemy的create_all()過程中將創建哪些類型的信息。 是的,如果我設置生成的SQL的回顯,則可以打印它們,但是如何在不實際訪問數據庫的情況下打印出來? 例如,我有一個模型:
class MyModel(Base):
id = Column(Integer, primary_key=True)
indexed_field = Column(String(50))
enum_field = Column(Enum(MyEnum))
__table_args__ = (
Index("my_ix", indexed_field),
)
MyEnum在哪里:
class MyEnum(enum.Enum):
A = 0
B = 1
我可以這樣獲得CREATE TABLE
語句和所有CREATE INDEX
語句:
from sqlalchemy.schema import CreateTable, CreateIndex
print(str(CreateTable(MyModel.__table__).compile(postgres_engine)))
for idx in MyModel.__table__.indexes:
print(str(CreateIndex(idx)).compile(postgres_engine))
結果將是這樣的:
CREATE TABLE my_model (
id SERIAL NOT NULL,
indexed_field VARCHAR(50),
enum_field myenum,
PRIMARY KEY (id)
)
CREATE INDEX my_ix ON my_model (indexed_field)
注意行enum_field myenum
。 如何獲取CREATE TYPE myenum...
語句的生成SQL?
我找到了答案!
from sqlalchemy.dialects.postgresql.base import PGInspector
PGInspector(postgres_engine).get_enums()
它返回所有創建的枚舉的列表,IMO比原始sql更好, 文檔在此處 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.