我希望能够获得有关在SQLAlchemy的create_all()期间将创建哪些类型的信息。是的,如果我设置了生成的SQL的回显,它们可以被打印,但是如何在不实际访问数据库的情况下打印它?例如,我有一个模型:
module.exports = () => {
var router = express.Router();
router.get('/', (req, res) => {
db.query(`SELECT * FROM articles_table WHERE ID='${pageId.id}'`, (err, page) => {
if (err) {
console.error(err);
res.status(500).send('database error').end();
} else {
res.send(page);
}
})
})
MyEnum在哪里:
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),
)
我可以获得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
语句生成SQL?
答案 0 :(得分:-1)
我找到了答案!
from sqlalchemy.dialects.postgresql.base import PGInspector
PGInspector(postgres_engine).get_enums()
它返回所有已创建枚举的列表,其中IMO甚至比原始sql documentation is here更好。