Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DATABASE_DETAILS = {
- 'drivername': 'postgres',
- 'host' : 'localhost',
- 'port' : '5432',
- 'username' : 'postgres',
- 'password' : '',
- 'database' : 'test'
- }
- #For Modeling
- from sqlalchemy.orm import relationship
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.dialects.postgresql.json import JSONB
- from sqlalchemy import Column, Integer, String, Text, ForeignKey
- #For Session Creation
- from sqlalchemy.engine.url import URL
- from sqlalchemy.orm import sessionmaker, relationship
- from sqlalchemy import create_engine
- #Other
- from hashlib import sha256
- from json import dumps, load
- #connect to db
- engine = create_engine(URL(**DATABASE_DETAILS), echo=True)
- #create our mapping
- Base = declarative_base()
- class User(Base):
- __tablename__ = 'users'
- id = Column(Integer, primary_key=True)
- email = Column(Text, nullable=False, unique=True)
- name = Column(Text, nullable=False)
- password = Column(Text, nullable=False)
- #info = Column(MutableDict.as_mutable(JSONB))
- entries = relationship('Entry', backref='user')
- def __init__(self, email, name, password):
- self.email = sha256(email.encode()).hexdigest()
- self.name = name
- self.password = password #later -> bcrypt.encrypt(password)
- def __repr__(self):
- return "<User(id='%s', email='%s', name='%s')>" % (
- self.id, self.email, self.name)
- class Entry(Base):
- __tablename__ = 'entries'
- id = Column(Integer, primary_key=True)
- espn_gameID = Column(Text)
- ncaa_gameID = Column(Text)
- user_id = Column(Integer, ForeignKey('users.id'))
- #create tables
- Base.metadata.create_all(engine)
- #start session
- Session = sessionmaker(bind=engine)
- session = Session()
- #query users
- queried = session.query(User).filter_by(id=1).first()
- if not(queried):
- new_user = User(email="gaben@valvesoftware.com", name='Gabe', password='hunter2')
- session.add(new_user)
- if new_user in session.new:
- session.commit()
- else:
- user = queried
- print(user.entries)
- user.entries.append(Entry(espn_gameID='BLAH'))
- # print(user.entries[0].user.email)
- if user in session.dirty:
- session.commit()
Add Comment
Please, Sign In to add comment