[英]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.