内容简介:最近在研究SQLAlchemy源码,自己造个轮子先(当然,SQLAlchemy远比这里复杂)运行结果:
最近在研究SQLAlchemy源码,自己造个轮子先(当然,SQLAlchemy远比这里复杂)
import logging logging.basicConfig(level=logging.DEBUG) class Column: def __init__(self, type, default=None): self.col_name = None self.col_type = type self.col_default = default def __eq__(self, value): logging.debug("__eq__ of {} && {}".format(self, value)) return "{} = {}".format(self.col_name, value) class Base(type): def __new__(cls, *args, **kwargs): logging.debug("creating class {}, args {}, kwargs {}".format( cls, args, kwargs )) if len(args) > 2: for k, v in args[2].items(): if k.startswith("_"): continue v.col_name = k return type.__new__(cls, *args, **kwargs) class User(metaclass=Base): __tablename__ = "user" id = Column(int) name = Column(str) passwd = Column(str) class Queryable: def __init__(self, table): self.table = table def filter(self, text): return "select * from {} where {}".format( self.table.__tablename__, text, ) class Session: def query(self, table): logging.debug("returning Queryable({})".format(table)) return Queryable(table) session = Session() print(session.query(User).filter(User.id == 1))
运行结果:
jiajun@debian test: python3 orm.py DEBUG:root:creating class <class '__main__.Base'>, args ('User', (), {'__qualname__': 'User', '__tablename__': 'user', 'id': <__main__.Column object at 0x7f8174b107b8>, 'passwd': <__main__.Column object at 0x7f8174b10940>, 'name': <__main__.Column object at 0x7f8174b10828>, '__module__': '__main__'}), kwargs {} DEBUG:root:returning Queryable(<class '__main__.User'>) DEBUG:root:__eq__ of <__main__.Column object at 0x7f8174b107b8> && 1 select * from user where id = 1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动社交时代的互动搜索营销(全彩)
萧秋水、秋叶、南方锈才 / 电子工业出版社 / 2014-8-1 / 55.00元
《移动社交时代的互动搜索营销(全彩)》跳出搜索引擎的局限,告诉读者如何利用互联网找到客户的思维。《移动社交时代的互动搜索营销(全彩)》只谈如何有效利用搜索引擎(包括移动端搜索)、电商网站、新媒体,不传播所谓的一夜暴红、一夜暴富的神话。《移动社交时代的互动搜索营销(全彩)》作者利用其丰富的实战经验,结合大量国内不同行业的实际应用案例,生动地告诉读者,怎样正确地利用搜索引擎,以很小的投资获得巨大的回报......一起来看看 《移动社交时代的互动搜索营销(全彩)》 这本书的介绍吧!