python sql模板_python – SQLAlchemy – 创建表模板

我刚开始使用SQLAlchemy而且我一直在想……我的模型中会有很多表格.我希望我的模型中的每个表都有自己的文件.

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

from sqlalchemy import MetaData

from sqlalchemy.orm import scoped_session, sessionmaker

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.dialects import postgresql

import 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 database

metadata = MetaData()

# declarative table definitions

Base = declarative_base()

Base.metadata = metadata

schema = 'srbam_dev'

在meta.py中

在_init_.py之后

"""The application's model objects"""

import sqlalchemy as sa

from sqlalchemy import orm

from models import meta

from models.filers import Filer

from models.vfilers import Vfiler

from models.filer_options import FilerOption

def 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 Base

from models.meta import Basic_Table

from models.meta import schema

import sqlalchemy as sa

from sqlalchemy.dialects import postgresql

class 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'),

config.get('database','password'),

config.get('database','host'),

config.get('database','port'),

config.get('database','dbname')

)

init_models(db_url)

meta.Base.metadata.drop_all(bind=meta.engine)

meta.Base.metadata.create_all(bind=meta.engine)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值