Python 在SQLAlchemy中需要多少基本实例或元数据实例?

Python 在SQLAlchemy中需要多少基本实例或元数据实例?,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我目前正在阅读有关SQLAlchemy的文档,以便在Flask中使用,我非常不清楚的一件事是我需要多少特定SQLAlchemy对象的实例(例如Base或元数据) 例如,此处的ORM文档()显示了以下示例: from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String Base = declarative_base() class User(Base)

我目前正在阅读有关SQLAlchemy的文档,以便在Flask中使用,我非常不清楚的一件事是我需要多少特定SQLAlchemy对象的实例(例如
Base
元数据

例如,此处的ORM文档()显示了以下示例:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class User(Base):
    ...
    ...
现在,我需要每个ORM类的
Base
实例吗?或者我可以在某个地方(比如在
\uuuu init\uuuuuuuuuy.py
中)声明一个
Base
实例并重新使用它吗?如果我可以声明一个实例并重新使用它,那么从初始化的角度来看,它是线程安全的,还是我需要确保部分或所有与ORM相关的初始化在启动时发生一次

类似地,
元数据的类似情况如下:

from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey

metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True)
    Column('name', String),
    Column('fullname', String))
现在,如果我要在用户下方声明一个地址
(如文档中的示例所示),我可以看到这可能会很好,因为执行是按顺序进行的。但是如果我把地址放在另一个模块里呢?然后我是否需要为该模块创建一个新的
元数据实例

我发现自己一次又一次地问这个问题。我还试图确定是否有多个
Base
MetaData
对象是一个问题


我对大规模Python开发比较陌生(我在其中做了很多单线程脚本编写),所以我对范围和线程的理解可能有些欠缺?

在flask项目中只需要一个Base实例。如果您使用flask sqlalchemy,那么您可以直接使用sqlalchemy实例中的Model

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

class User(db.Model):
    pass
使用Flask SQLAlchemy,您将拥有分页和一些有用的方法,如get_或_404,这将节省您以后的时间