python – SQLAlchemy – 创建表模板

python – SQLAlchemy – 创建表模板,第1张

概述我刚开始使用SQLAlchemy而且我一直在想……我的模型中会有很多表格.我希望我的模型中的每个表都有自己的文件. 我目前正在使用以下代码: from sqlalchemy import MetaDatafrom sqlalchemy.orm import scoped_session, sessionmakerfrom sqlalchemy.ext.declarative import de 我刚开始使用sqlAlchemy而且我一直在想……我的模型中会有很多表格.我希望我的模型中的每个表都有自己的文件.

我目前正在使用以下代码:

from sqlalchemy import MetaDatafrom sqlalchemy.orm import scoped_session,sessionmakerfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.dialects import postgresqlimport sqlalchemy as sa__all__ = ['Session','engine','Metadata']# sqlAlchemy database engine. Updated by model.init_model()engine = None# sqlAlchemy session manager. Updated by model.init_model()Session = scoped_session(sessionmaker())# Global Metadata. If you have multiple databases with overlapPing table# names,you'll need a Metadata for each databaseMetadata = MetaData()# declarative table deFinitionsBase = declarative_base()Base.Metadata = Metadataschema = 'srbam_dev'

在Meta.py中

在_init_.py之后

"""The application's model objects"""import sqlalchemy as safrom sqlalchemy import ormfrom models import Metafrom models.filers import filerfrom models.vfilers import Vfilerfrom models.filer_options import filerOptiondef init_models(engine):    """Call me before using any of the tables or classes in the model"""    ## Reflected tables must be defined and mapped here    #global reflected_table    #reflected_table = sa.table("Reflected",Meta.Metadata,autoload=True,#                           autoload_with=engine)    #orm.mapper(Reflected,reflected_table)    #    Meta.engine = sa.create_engine(engine)    Meta.Session.configure(bind=Meta.engine)    class Basic_table(object):        ID = sa.Column(            postgresql.UUID(),nullable=False,primary_key=True            )        created = sa.Column(            sa.types.DateTime(True),nullable=False            )        modifIEd = sa.Column(            sa.types.DateTime(True),nullable=False            )

然后在我的所有模型中关注

from models.Meta import Basefrom models.Meta import Basic_tablefrom models.Meta import schemaimport sqlalchemy as safrom sqlalchemy.dialects import postgresqlclass filer(Base,Basic_table):

这项工作正常,只要我没有开始在表上使用一些外键,一旦我使用外键说

sqlalchemy.exc.noreferencedtableError: Foreign key associated with column 't_vfilers.filer_ID' Could not find table 't_filers' with which to generate a foreign key to target column 'ID'

我试图直接在filer类中定义ID键(并从声明中删除Basic_table),但这并没有解决问题.

创建数据库的代码如下所示
    #!的/usr/bin中/Python
    导入ConfigParser
    来自sqlalchemy.engine.url导入URL
    来自型号进口*

config = ConfigParser.RawConfigParser()config.read('conf/core.conf')db_url = URL(    'postgresql+psycopg2',config.get('database','username'),'password'),'host'),'port'),'dbname')    )init_models(db_url)Meta.Base.Metadata.drop_all(bind=Meta.engine)Meta.Base.Metadata.create_all(bind=Meta.engine)

有谁知道如何解决这个问题?

解决方法 Marek,做一件事尝试定义外键以及模式名称,即’test.t_vfilers.filer_ID'(这里’test’是模式名称),这将解决问题. 总结

以上是内存溢出为你收集整理的python – SQLAlchemy – 创建表模板全部内容,希望文章能够帮你解决python – SQLAlchemy – 创建表模板所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1196527.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存