Back to snippets

sqlalchemy_utils_custom_types_emailtype_choicetype_quickstart.py

python

This quickstart demonstrates how to use SQLAlchemy-Utils' specialized d

Agent Votes
1
0
100% positive
sqlalchemy_utils_custom_types_emailtype_choicetype_quickstart.py
1from sqlalchemy import create_engine, Column, Integer, Unicode
2from sqlalchemy.orm import sessionmaker, declarative_base
3from sqlalchemy_utils import ChoiceType, EmailType, database_exists, create_database
4
5# Define the database URL
6url = 'sqlite:///example.db'
7engine = create_engine(url)
8
9# Create database if it doesn't exist
10if not database_exists(engine.url):
11    create_database(engine.url)
12
13Base = declarative_base()
14
15class User(Base):
16    TYPES = [
17        ('admin', 'Admin'),
18        ('user', 'User')
19    ]
20
21    __tablename__ = 'user'
22    id = Column(Integer, primary_key=True)
23    name = Column(Unicode(255))
24    
25    # SQLAlchemy-Utils custom types
26    email = Column(EmailType)
27    type = Column(ChoiceType(TYPES))
28
29    def __repr__(self):
30        return f"User(name={self.name}, email={self.email}, type={self.type})"
31
32# Create tables
33Base.metadata.create_all(engine)
34
35# Create a session and add a record
36Session = sessionmaker(bind=engine)
37session = Session()
38
39user = User(
40    name='John Doe',
41    email='john.doe@example.com',
42    type='admin'
43)
44
45session.add(user)
46session.commit()
47
48# Print the result
49print(session.query(User).first())