Advertisement
Guest User

Untitled

a guest
Jul 31st, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. import sys
  2. import logging
  3. from sqlalchemy import create_engine, Column, Integer, String, Boolean
  4. from sqlalchemy.orm import sessionmaker, Session
  5. from sqlalchemy.ext.declarative import declarative_base
  6. from sqlalchemy.exc import IntegrityError
  7. from sqlalchemy_utils import PasswordType, PhoneNumberType
  8.  
  9. # logger configurations should be done while application is starting up
  10. logger = logging.getLogger(__name__)
  11. logger.setLevel(logging.DEBUG)
  12. output = logging.StreamHandler(sys.stdout)
  13. output.setLevel(logging.DEBUG)
  14. logger.addHandler(output)
  15.  
  16. # comes from application config
  17. DEBUG = True
  18. MYSQL_URI = 'mysql://user:password@localhost:3306/span'
  19. MYSQL_ENGINE_CONFIG = {
  20. 'echo': DEBUG,
  21. 'echo_pool': DEBUG,
  22. 'pool_size': 100,
  23. 'encoding': 'utf-8',
  24. 'pool_timeout': 20,
  25. 'pool_recycle': 3200
  26. }
  27.  
  28. # create connection engine
  29. engine = create_engine(MYSQL_URI, **MYSQL_ENGINE_CONFIG)
  30.  
  31.  
  32. Session = sessionmaker(bind=engine)
  33.  
  34. Base = declarative_base()
  35.  
  36.  
  37. # Describe models
  38. class User(Base):
  39. __tablename__ = 'users'
  40. id = Column(Integer, primary_key=True, autoincrement=True)
  41. username = Column(String(255), unique=True, nullable=False)
  42. password = Column(
  43. PasswordType(
  44. schemes=('pbkdf2_sha512', ) # hash algo can be changed, passlib is required to be installed
  45. ),
  46. nullable=False
  47. )
  48. telephone = Column(PhoneNumberType(), nullable=False)
  49. is_active = Column(Boolean(), default=True, nullable=False)
  50.  
  51.  
  52. # create model's tables
  53. Base.metadata.create_all(bind=engine)
  54.  
  55. # -------------------
  56.  
  57. session = Session()
  58.  
  59. password = '1Sf123a#sqa'
  60.  
  61. user = User(username='Dmytro', password=password, telephone='+380999245702')
  62. try:
  63. session.add(user)
  64. session.flush()
  65. session.commit()
  66. except IntegrityError as ex:
  67. session.rollback()
  68. logger.error('User already exists (username=%s). Continue...', user.username)
  69.  
  70. # filtering
  71. user = session.query(User).filter(User.username == 'Dmytro').first()
  72. if user:
  73. logger.info('Username: %s', user.username)
  74. logger.info('Is password correct: %s', user.password == password)
  75.  
  76. session.close()
  77.  
  78.  
  79. # Heh.. it's more then 15 LOC, but it's fully operational
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement