2

こんにちは、私は SQLalchemy を初めて使用し、列にデータを挿入する際に問題があります。

import sqlalchemy
from sqlalchemy import create_engine                            
from sqlalchemy.ext.declarative import declarative_base                 
from sqlalchemy import Column, Integer, String, ForeignKey, Boolean     
from sqlalchemy.orm import relationship, backref                        
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///test.db')
Base = declarative_base()

class Users(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String, unique=True)
    password = Column(String)
    email = Column(String)

        def __init__(self, name, password, email):
            self._name = name
            self._password = password
            self._email = email    

Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
Session.configure(bind=engine)
session = Session()


dm_user = Users("Dungeonmaster", "123", "email")
print dm_user.name
print dm_user.password
print dm_user.email

session.add(dm_user)

our_user = session.query(Users).filter_by(name='Dungeonmaster').first() 

session.commit()

sqlite studio を使用して、データが追加されているかどうかを確認しました。新しい行が (新しい ID で) 作成されていることがわかりますが、データ名、パスワード、および電子メールは挿入されていません。

追加しようとする前に表示されたプリントでは、何か問題が発生していますが、何が問題なのかわかりません。少し手伝ってください

( dm_user = Users("Dungeonmaster", "123", "email") も一重引用符で試しました(sqlalchemyを使用する前に私を助けましたが、ここでは違いはありません)

4

1 に答える 1

1

initメソッドは永続列を初期化しません。代わりに試してください(アンダースコアを削除してください):

def __init__(self, name, password, email):
    self.name = name
    self.password = password
    self.email = email   
于 2013-03-01T14:35:33.183 に答える