小编Pan*_*nda的帖子

我对 SQLalchemy declarative_base 使用什么类型?

我想为我的 SQLAlchemy 基类使用类型,但似乎找不到类型定义。

例如:

from sqlalchemy.types import BigInteger
from sqlalchemy.schema import Column, Index
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):

    __tablename__ = "users"

    id_user = Column(
        BigInteger, primary_key=True, autoincrement=True, nullable=False, index=True
    )
    username = Column(String, unique=True, index=True)

Run Code Online (Sandbox Code Playgroud)

现在,当引用这个 User 类时,我不知道该使用什么类型。此外,如果我想要一个包含 table_name 的字典:模型映射如下:

from typing import Any, Dict

table_model_map: Dict[str, Any] = {
    "users": User,
    "another_table": AnotherTableModel,
}

Run Code Online (Sandbox Code Playgroud)

我将如何定义这个字典的类型

非常感谢您帮助我理解这一点!

python sqlalchemy python-typing

7
推荐指数
1
解决办法
5098
查看次数

React history.push 重新加载组件。希望它只加载一次

在使用 history.push 加载组件后重定向时 - 我的组件再次呈现。导致componentDidMount()函数运行两次。

这是我的一个组件的简化片段。我希望componentDidMount()只运行一次 - 它可以在没有history.push. 但是当我添加history.push- 它加载两次。(如果我使用Redirectfrom也会发生同样的情况react-router

import * as React from "react";
import { history } from "../../configureServices";
import { explore } from "../../routes";

export class WelcomeComponent extends React.Component<object, object> {
  componentDidMount() {
    // tslint:disable-next-line:no-console
    console.log("componentDidMount");
    history.replace(explore);
  }
  render() {
    return <div />;
  }
}
Run Code Online (Sandbox Code Playgroud)

安慰:

componentDidMount
componentDidMount
Run Code Online (Sandbox Code Playgroud)

很想找到一种方法让这个只运行一次。

编辑:谢谢大家的回复。我将发布一个快速代码片段,然后稍后发布一个 Fiddle。

- - 更新:

我正在使用 React-Router。我在 configureServices.ts 文件中构建历史记录(以及一些其他服务)。

// configureServices.ts
import { createBrowserHistory } …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

6
推荐指数
1
解决办法
5554
查看次数