【发布时间】:2018-02-27 14:13:23
【问题描述】:
当用户想要添加 IP 地址和端口以获取引用他添加的特定 ip:port 的 url 映射时,我创建了一个表。该表是根据他的电子邮件地址创建的。
def create_user_table(table_name):
engine = get_sql_engine()
metadata = MetaData(engine)
user_table = Table(table_name, metadata,
Column("userip_id", db.Integer, primary_key=True, autoincrement=True),
Column("date_created", db.DateTime, default=db.func.current_timestamp()),
Column("date_modified", db.DateTime, default=db.func.current_timestamp(),
onupdate=db.func.current_timestamp()),
Column("ipaddress", CIDR, nullable=False),
Column("urlmap", db.String(10), nullable=False, unique=True),
Column("port", db.Integer, index=True),
Column("device", db.String(10)),
Column("path", db.String(30)),
Column("service", db.String(10)),
Column("count_updates", db.Integer, default=0, nullable=False),
)
user_table.create(engine)
return user_table
我没有使 ipaddress 和端口地址唯一,因为同一个用户可以有不同的端口但相同的 ip 和不同的 ip 但相同的端口地址(考虑到用户可以更新,我选择了后者)
如果我在 db 继承形式 db.Model 中创建一个表,我可以像这样查询
cls.query.filter(ipaddress=ipaddress).first() 这将返回该表对象,我可以检查该 Ip 是否具有特定端口,但现在我已经创建了从 sqlalchemy.Table 继承的表,我没有可用的查询功能。
如果特定的ip有特定的端口地址映射到现有的urlmap(未知),如何查询和比较?
【问题讨论】:
标签: sqlalchemy flask-sqlalchemy