
我目前正在使用以下代码:
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 – 创建表模板所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)