2017-01-09 2 views
0

Ich habe folgendes Modell auf SQLAlchemy:SQLAlchemy Prüfparameter auf neue Instanz

from sqlalchemy import create_engine 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey 
from sqlalchemy.sql import func 

from sqlalchemy.orm import sessionmaker 
import datetime 


class Site(Base): 
    __tablename__ = 'site' 

    id = Column(Integer, primary_key=True) 
    url = Column(String(64), nullable=False) 

    def __repr__(self): 
     return "<Site(id='%s', home_url='%s')>" % (
      self.id, self.url) 

kann ich neue Instanzen erstellen, wie:

a_site = Site(url='http://stackoverflow.com/') 

eine Möglichkeit, um zu prüfen, ob die Parameter eine gültige URL ist Wann habe ich instanziiert?

Zum Beispiel rufen Sie die Methode is_valid_url(url), wenn der Konstruktor aufgerufen wird und eine Ausnahme auslösen, wenn die is_valid_urlFalse zurückgibt?

Antwort

0

Sie Konstruktor nach einem Python-Objekt erstellen können:

class Site(Base): 
    __tablename__ = 'site' 

    id = Column(Integer, primary_key=True) 
    url = Column(String(64), nullable=False) 

    def __init__(self, **kwargs): 
     self.url = kwargs.get('url') 
     if not is_valid_url(self.url): 
      raise NotValidURLException("invalid url address") 
     ... 

nur Erstellen Sie Methode is_valid_url irgendwo (Sie können Tonnen von Regex finden, die das überprüfen können).

Verwandte Themen