Python 在SQLAlchemy中需要多少基本实例或元数据实例?
我目前正在阅读有关SQLAlchemy的文档,以便在Flask中使用,我非常不清楚的一件事是我需要多少特定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)
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,这将节省您以后的时间