Python SQLAlchemy检查新实例上的参数

Python SQLAlchemy检查新实例上的参数,python,sqlalchemy,Python,Sqlalchemy,我在SQLAlchemy上有以下模型: 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 sessionm

我在
SQLAlchemy
上有以下模型:

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)
当我实例化时,有没有办法检查参数是否是有效的url


例如,调用构造函数时调用方法
is\u-valid\u-url(url)
,如果
is\u-valid\u-url
返回
False

是,您可以将
url
定义为
混合属性,并实现:

@url.setter
def url(self, value):
    #your logic here

如中所述,您可以像在任何python对象中一样创建构造函数:

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")
        ...
justcreate方法在某处是有效的url(您可以找到大量的正则表达式来检查)

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")
        ...