簡體   English   中英

sqlalchemy:聲明式基礎如何導入自己的類

[英]sqlalchemy: declarative base how to import own classes

我只是從sqlalchemy orm開始。 基本上,我將遵循本教程中的示例。 雖然此處顯示的代碼工作正常,但我的代碼以錯誤結尾。

我有一個定義所有聲明的腳本:

import sqlalchemy as sql
import sqlalchemy.ext.declarative as sqldcl
import sqlalchemy.orm as sqlmap

engine = sql.create_engine('postgresql://username@localhost/dbname')

Base = sqldcl.declarative_base(metadata=sql.MetaData(engine, schema='schemaname'))

class Creators(Base):
    __tablename__ = 'creators'
    id = sql.Column(sql.Integer, primary_key=True)
    entity1 = sql.Column(sql.Integer)
    entity2 = sql.Column(sql.Unicode())


class Organizations(Base):
    __tablename__ = 'organizations'
    id = sql.Column(sql.Integer, primary_key=True)
    fk_creators = sql.Column(sql.Integer, sql.ForeignKey('creators.id'))
    creators = sqlmap.relationship(Creators)
    entity4 = sql.Column(sql.Integer)
    entity5 = sql.Column(sql.Unicode())

Base.metadata.create_all(engine)

該腳本運行無誤。 但是,如果我現在想使用以下腳本將某些內容插入數據庫中...

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from sqlalchemy_declarative import Creators, Base, Organizations

engine = create_engine('postgresql://username@localhost/dbname')
Base.metadata.bind = engine

DBSession = sessionmaker(bind=engine)

session = DBSession()

new_creator = Creators(entity1='111')
session.add(new_creator)
session.commit()


new_organization = Organizations(entity4='111', entity5='Blabla', creators=new_creator)
session.add(new_organization)
session.commit()

...我收到以下錯誤:

from sqlalchemy_declarative import Creators, Base, Organizations
ImportError: cannot import name 'Creators'

我只是無法弄清楚哪里出了問題。 我很感激任何幫助。 先感謝您。

哎呀。 好。 我知道了。 這確實是一個路徑/命名問題,我的代碼沒有錯。 感謝@reptilicus使我步入正軌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM