грубые функции в sqlalchmey orm - PullRequest
0 голосов
/ 11 марта 2019

, поэтому я пытался реализовать функции CRUD в своем коде, поэтому я сначала пытаюсь создать сеанс, но он продолжает выдавать ошибку «двигатель не определен», поэтому я пытался определить его, но продолжаю получать ту же ошибку,Код создает базу данных 3 таблицы (пользователь, учетная запись, место) с использованием sqlalchemy ORM.что я делаю не так?

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


Session = sessionmaker(bind=engine)

Base = declarative_base()


class User(Base):
    __tablename__ = "user"
    id = Column('id',Integer,primary_key=True , autoincrement=True)
    username = Column('username',String , unique=True)
    admin = Column('admin',Boolean )
    password = Column('password' , String)      
    email = Column('email' , String , unique=True)
    p_id = Column(Integer , ForeignKey('place.id'))
    googleassist = Column('googleassist' , String)      
    account = relationship("Account",           ## Cascade to delete associated account
        back_populates='user',          ## if that user was deleted.
        cascade='all, delete-orphan')


class Account(Base):
    __tablename__ = "account"
    id = Column('id', Integer,primary_key=True,autoincrement=True)
    user_id = Column(Integer , ForeignKey('user.id'))



class Place(Base):
    __tablename__ = "place"
    id = Column('id', Integer,primary_key=True,autoincrement=True)
    p_location = Column('p_location' , String)
    h_id = Column('h_id',Integer)


Session.configure(bind=engine)
engine = create_engine('sqlite:///withServer.db')
Base.metadata.create_all(engine)

session = Session(engine)
#creating objects

u1=User(    id = '1' ,
              username = 'ali',
              admin = '1',
              password = 'pass',
              email = 'haifa@gmail.com'
              )
session.add(u1)
session.commit()


#update
i = session.query(User)
i.password = 'passtoo'
session.add(i)
session.commit()


#delete
i = session.query(Account).filter(Account.id == '1').one()
session.delete(i)
session.commit()

1 Ответ

0 голосов
/ 11 марта 2019

на самом деле вы просто используете engine, не задавая его первым:

Session = sessionmaker(bind=engine)

вам нужно иметь определение вашего engine перед этой строкой. двигаться

engine = create_engine('sqlite:///withServer.db')

до первого использования engine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...