snipt

Ctrl+h for KB shortcuts

Python

Trying Lazy DAL

# -*- coding: utf-8 -*-

__all__ = ["LazyDAL", "Field"]


from gluon.dal import DAL, Field


class LazyDAL(object):
    dbdefs = 0
    db_table_defs = []
    def __init__(self, *args, **kwargs):
        self._lazydb = dict(args=args, kwargs=kwargs)
        print self._lazydb 

    def lazy_define_table(self, key):
        print "Lazy defining %s" % key
        lazytable = self._lazytables.get(key, {})
        fields = lazytable.get('fields', tuple())
        kwargs = lazytable.get('kwargs', {})
        #self._lazytables.pop(key)
        table = self._db.define_table(key, *fields, **kwargs)
        ## debug: how many times each table gets defined?
        LazyDAL.db_table_defs.append(key)
        print "table definitions", LazyDAL.db_table_defs
        ##/debug
        return table

    def define_table(self, tablename, *fields, **kwargs):
       # if not hasattr(self, "_lazytables"):
       #     self._lazytables = {}
       self._lazytables.setdefault(tablename, dict(fields=fields, kwargs=kwargs))
       print self._lazytables

    def get_lazy_tables(self):
        print "getting lazytables"
        self._lazytables = {}
        return self._lazytables

    @property
    def tables(self):
        return self._lazytables.keys()

    def __call__(self, *args, **kwargs):
        dbset = self._db(*args, **kwargs)
        ## debug: counting how many time db gets defined
        LazyDAL.dbdefs += 1
        print "db definition", LazyDAL.dbdefs
        ## /debug
        return dbset


    def __getattr__(self, key):
        print "trying to get %s" % key
        if key == '_db':
            print "key is db"
            db = DAL(*self._lazydb["args"], **self._lazydb["kwargs"])  
            return db
        if key == "_lazytables":
            print "key is lazytables"
            return self.get_lazy_tables()
        # if key in self.tables:
        if key in self._lazytables:
            print "key is table"
            return self.lazy_define_table(key)
        else:
            print "gettarr self key"
            return getattr(self, key)

    def __getitem__(self, key):
        print"getting item"
        return getattr(self, str(key))
        


if __name__ == "__main__":
    db = LazyDAL("sqlite://lazie2.db", migrate=True)

    db.define_table("category",
            Field("name"),
            format="%(name)s"
        )


    db.define_table("product",
            Field("name"),
            Field("category", "reference category"),
            format="%(name)s"
        )
    
    print db.tables  # This is a list of future tables
    
    ###############################################
    # Until here nothing is touched in db.
    # The definitions resides in db object (dicts)
    ##############################################
    
    rows = db(db.category).select()  # here, the db is suposed to be lazy Defined.
    
    

##################################################
# OUTPUT
##################################################

{'args': ('sqlite://lazie2.db',), 'kwargs': {'migrate': True}}
trying to get _lazytables
key is lazytables
getting lazytables
{'category': {'fields': (<gluon.dal.Field object at 0x2909950>,), 'kwargs': {'format': '%(name)s'}}}
{'category': {'fields': (<gluon.dal.Field object at 0x2909950>,), 'kwargs': {'format': '%(name)s'}}, 'product': {'fields': (<gluon.dal.Field object at 0x2909990>, <gluon.dal.Field object at 0x29099d0>), 'kwargs': {'format': '%(name)s'}}}
['category', 'product']
trying to get category
key is table
Lazy defining category
trying to get _db
key is db
table definitions ['category']
trying to get _db
key is db
db definition 1
Traceback (most recent call last):
  File "/home/bcr/projects/lazydal/applications/welcome/modules/lazyedal.py", line 92, in <module>
    rows = db(db.category).select()
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 6333, in select
    return self.db._adapter.select(self.query,fields,attributes)
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 1274, in select
    sql = self._select(query, fields, attributes)
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 1672, in _select
    sql = super(SQLiteAdapter, self)._select(query, fields, attributes)
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 1156, in _select
    query = self.common_filter(query,tablenames)
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 1585, in common_filter
    table = self.db[tablename]
  File "/usr/lib/pymodules/python2.7/gluon/dal.py", line 5113, in __getitem__
    return dict.__getitem__(self, str(key))
KeyError: 'category'
[Finished in 0.3s with exit code 1]

###################################################
# SQLITE is created, migration file created
# sql.log created
###################################################
https://snipt.net/embed/2280e8322dafccabcd6263089663c1bb/
/raw/2280e8322dafccabcd6263089663c1bb/
2280e8322dafccabcd6263089663c1bb
python
Python
143
2019-07-10T04:32:39
True
False
False
Aug 15, 2012 at 02:15 AM
/api/public/snipt/45718/
trying-lazy-dal
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10"> 10</a> <a href="#L-11"> 11</a> <a href="#L-12"> 12</a> <a href="#L-13"> 13</a> <a href="#L-14"> 14</a> <a href="#L-15"> 15</a> <a href="#L-16"> 16</a> <a href="#L-17"> 17</a> <a href="#L-18"> 18</a> <a href="#L-19"> 19</a> <a href="#L-20"> 20</a> <a href="#L-21"> 21</a> <a href="#L-22"> 22</a> <a href="#L-23"> 23</a> <a href="#L-24"> 24</a> <a href="#L-25"> 25</a> <a href="#L-26"> 26</a> <a href="#L-27"> 27</a> <a href="#L-28"> 28</a> <a href="#L-29"> 29</a> <a href="#L-30"> 30</a> <a href="#L-31"> 31</a> <a href="#L-32"> 32</a> <a href="#L-33"> 33</a> <a href="#L-34"> 34</a> <a href="#L-35"> 35</a> <a href="#L-36"> 36</a> <a href="#L-37"> 37</a> <a href="#L-38"> 38</a> <a href="#L-39"> 39</a> <a href="#L-40"> 40</a> <a href="#L-41"> 41</a> <a href="#L-42"> 42</a> <a href="#L-43"> 43</a> <a href="#L-44"> 44</a> <a href="#L-45"> 45</a> <a href="#L-46"> 46</a> <a href="#L-47"> 47</a> <a href="#L-48"> 48</a> <a href="#L-49"> 49</a> <a href="#L-50"> 50</a> <a href="#L-51"> 51</a> <a href="#L-52"> 52</a> <a href="#L-53"> 53</a> <a href="#L-54"> 54</a> <a href="#L-55"> 55</a> <a href="#L-56"> 56</a> <a href="#L-57"> 57</a> <a href="#L-58"> 58</a> <a href="#L-59"> 59</a> <a href="#L-60"> 60</a> <a href="#L-61"> 61</a> <a href="#L-62"> 62</a> <a href="#L-63"> 63</a> <a href="#L-64"> 64</a> <a href="#L-65"> 65</a> <a href="#L-66"> 66</a> <a href="#L-67"> 67</a> <a href="#L-68"> 68</a> <a href="#L-69"> 69</a> <a href="#L-70"> 70</a> <a href="#L-71"> 71</a> <a href="#L-72"> 72</a> <a href="#L-73"> 73</a> <a href="#L-74"> 74</a> <a href="#L-75"> 75</a> <a href="#L-76"> 76</a> <a href="#L-77"> 77</a> <a href="#L-78"> 78</a> <a href="#L-79"> 79</a> <a href="#L-80"> 80</a> <a href="#L-81"> 81</a> <a href="#L-82"> 82</a> <a href="#L-83"> 83</a> <a href="#L-84"> 84</a> <a href="#L-85"> 85</a> <a href="#L-86"> 86</a> <a href="#L-87"> 87</a> <a href="#L-88"> 88</a> <a href="#L-89"> 89</a> <a href="#L-90"> 90</a> <a href="#L-91"> 91</a> <a href="#L-92"> 92</a> <a href="#L-93"> 93</a> <a href="#L-94"> 94</a> <a href="#L-95"> 95</a> <a href="#L-96"> 96</a> <a href="#L-97"> 97</a> <a href="#L-98"> 98</a> <a href="#L-99"> 99</a> <a href="#L-100">100</a> <a href="#L-101">101</a> <a href="#L-102">102</a> <a href="#L-103">103</a> <a href="#L-104">104</a> <a href="#L-105">105</a> <a href="#L-106">106</a> <a href="#L-107">107</a> <a href="#L-108">108</a> <a href="#L-109">109</a> <a href="#L-110">110</a> <a href="#L-111">111</a> <a href="#L-112">112</a> <a href="#L-113">113</a> <a href="#L-114">114</a> <a href="#L-115">115</a> <a href="#L-116">116</a> <a href="#L-117">117</a> <a href="#L-118">118</a> <a href="#L-119">119</a> <a href="#L-120">120</a> <a href="#L-121">121</a> <a href="#L-122">122</a> <a href="#L-123">123</a> <a href="#L-124">124</a> <a href="#L-125">125</a> <a href="#L-126">126</a> <a href="#L-127">127</a> <a href="#L-128">128</a> <a href="#L-129">129</a> <a href="#L-130">130</a> <a href="#L-131">131</a> <a href="#L-132">132</a> <a href="#L-133">133</a> <a href="#L-134">134</a> <a href="#L-135">135</a> <a href="#L-136">136</a> <a href="#L-137">137</a> <a href="#L-138">138</a> <a href="#L-139">139</a> <a href="#L-140">140</a> <a href="#L-141">141</a> <a href="#L-142">142</a> <a href="#L-143">143</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="c1"># -*- coding: utf-8 -*-</span> </span><span id="L-2"><a name="L-2"></a> </span><span id="L-3"><a name="L-3"></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;LazyDAL&quot;</span><span class="p">,</span> <span class="s2">&quot;Field&quot;</span><span class="p">]</span> </span><span id="L-4"><a name="L-4"></a> </span><span id="L-5"><a name="L-5"></a> </span><span id="L-6"><a name="L-6"></a><span class="kn">from</span> <span class="nn">gluon.dal</span> <span class="kn">import</span> <span class="n">DAL</span><span class="p">,</span> <span class="n">Field</span> </span><span id="L-7"><a name="L-7"></a> </span><span id="L-8"><a name="L-8"></a> </span><span id="L-9"><a name="L-9"></a><span class="k">class</span> <span class="nc">LazyDAL</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> </span><span id="L-10"><a name="L-10"></a> <span class="n">dbdefs</span> <span class="o">=</span> <span class="mi">0</span> </span><span id="L-11"><a name="L-11"></a> <span class="n">db_table_defs</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-12"><a name="L-12"></a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> </span><span id="L-13"><a name="L-13"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_lazydb</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">args</span><span class="o">=</span><span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-14"><a name="L-14"></a> <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazydb</span> </span><span id="L-15"><a name="L-15"></a> </span><span id="L-16"><a name="L-16"></a> <span class="k">def</span> <span class="nf">lazy_define_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> </span><span id="L-17"><a name="L-17"></a> <span class="k">print</span> <span class="s2">&quot;Lazy defining </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">key</span> </span><span id="L-18"><a name="L-18"></a> <span class="n">lazytable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span> </span><span id="L-19"><a name="L-19"></a> <span class="n">fields</span> <span class="o">=</span> <span class="n">lazytable</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;fields&#39;</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">())</span> </span><span id="L-20"><a name="L-20"></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">lazytable</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;kwargs&#39;</span><span class="p">,</span> <span class="p">{})</span> </span><span id="L-21"><a name="L-21"></a> <span class="c1">#self._lazytables.pop(key)</span> </span><span id="L-22"><a name="L-22"></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_db</span><span class="o">.</span><span class="n">define_table</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="o">*</span><span class="n">fields</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-23"><a name="L-23"></a> <span class="c1">## debug: how many times each table gets defined?</span> </span><span id="L-24"><a name="L-24"></a> <span class="n">LazyDAL</span><span class="o">.</span><span class="n">db_table_defs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> </span><span id="L-25"><a name="L-25"></a> <span class="k">print</span> <span class="s2">&quot;table definitions&quot;</span><span class="p">,</span> <span class="n">LazyDAL</span><span class="o">.</span><span class="n">db_table_defs</span> </span><span id="L-26"><a name="L-26"></a> <span class="c1">##/debug</span> </span><span id="L-27"><a name="L-27"></a> <span class="k">return</span> <span class="n">table</span> </span><span id="L-28"><a name="L-28"></a> </span><span id="L-29"><a name="L-29"></a> <span class="k">def</span> <span class="nf">define_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tablename</span><span class="p">,</span> <span class="o">*</span><span class="n">fields</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> </span><span id="L-30"><a name="L-30"></a> <span class="c1"># if not hasattr(self, &quot;_lazytables&quot;):</span> </span><span id="L-31"><a name="L-31"></a> <span class="c1"># self._lazytables = {}</span> </span><span id="L-32"><a name="L-32"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">tablename</span><span class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span class="n">fields</span><span class="o">=</span><span class="n">fields</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="n">kwargs</span><span class="p">))</span> </span><span id="L-33"><a name="L-33"></a> <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span> </span><span id="L-34"><a name="L-34"></a> </span><span id="L-35"><a name="L-35"></a> <span class="k">def</span> <span class="nf">get_lazy_tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span><span id="L-36"><a name="L-36"></a> <span class="k">print</span> <span class="s2">&quot;getting lazytables&quot;</span> </span><span id="L-37"><a name="L-37"></a> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-38"><a name="L-38"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span> </span><span id="L-39"><a name="L-39"></a> </span><span id="L-40"><a name="L-40"></a> <span class="nd">@property</span> </span><span id="L-41"><a name="L-41"></a> <span class="k">def</span> <span class="nf">tables</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span><span id="L-42"><a name="L-42"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> </span><span id="L-43"><a name="L-43"></a> </span><span id="L-44"><a name="L-44"></a> <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> </span><span id="L-45"><a name="L-45"></a> <span class="n">dbset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_db</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-46"><a name="L-46"></a> <span class="c1">## debug: counting how many time db gets defined</span> </span><span id="L-47"><a name="L-47"></a> <span class="n">LazyDAL</span><span class="o">.</span><span class="n">dbdefs</span> <span class="o">+=</span> <span class="mi">1</span> </span><span id="L-48"><a name="L-48"></a> <span class="k">print</span> <span class="s2">&quot;db definition&quot;</span><span class="p">,</span> <span class="n">LazyDAL</span><span class="o">.</span><span class="n">dbdefs</span> </span><span id="L-49"><a name="L-49"></a> <span class="c1">## /debug</span> </span><span id="L-50"><a name="L-50"></a> <span class="k">return</span> <span class="n">dbset</span> </span><span id="L-51"><a name="L-51"></a> </span><span id="L-52"><a name="L-52"></a> </span><span id="L-53"><a name="L-53"></a> <span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> </span><span id="L-54"><a name="L-54"></a> <span class="k">print</span> <span class="s2">&quot;trying to get </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">key</span> </span><span id="L-55"><a name="L-55"></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s1">&#39;_db&#39;</span><span class="p">:</span> </span><span id="L-56"><a name="L-56"></a> <span class="k">print</span> <span class="s2">&quot;key is db&quot;</span> </span><span id="L-57"><a name="L-57"></a> <span class="n">db</span> <span class="o">=</span> <span class="n">DAL</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_lazydb</span><span class="p">[</span><span class="s2">&quot;args&quot;</span><span class="p">],</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">_lazydb</span><span class="p">[</span><span class="s2">&quot;kwargs&quot;</span><span class="p">])</span> </span><span id="L-58"><a name="L-58"></a> <span class="k">return</span> <span class="n">db</span> </span><span id="L-59"><a name="L-59"></a> <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s2">&quot;_lazytables&quot;</span><span class="p">:</span> </span><span id="L-60"><a name="L-60"></a> <span class="k">print</span> <span class="s2">&quot;key is lazytables&quot;</span> </span><span id="L-61"><a name="L-61"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_lazy_tables</span><span class="p">()</span> </span><span id="L-62"><a name="L-62"></a> <span class="c1"># if key in self.tables:</span> </span><span id="L-63"><a name="L-63"></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_lazytables</span><span class="p">:</span> </span><span id="L-64"><a name="L-64"></a> <span class="k">print</span> <span class="s2">&quot;key is table&quot;</span> </span><span id="L-65"><a name="L-65"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">lazy_define_table</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> </span><span id="L-66"><a name="L-66"></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-67"><a name="L-67"></a> <span class="k">print</span> <span class="s2">&quot;gettarr self key&quot;</span> </span><span id="L-68"><a name="L-68"></a> <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> </span><span id="L-69"><a name="L-69"></a> </span><span id="L-70"><a name="L-70"></a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> </span><span id="L-71"><a name="L-71"></a> <span class="k">print</span><span class="s2">&quot;getting item&quot;</span> </span><span id="L-72"><a name="L-72"></a> <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> </span><span id="L-73"><a name="L-73"></a> </span><span id="L-74"><a name="L-74"></a> </span><span id="L-75"><a name="L-75"></a> </span><span id="L-76"><a name="L-76"></a><span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span> </span><span id="L-77"><a name="L-77"></a> <span class="n">db</span> <span class="o">=</span> <span class="n">LazyDAL</span><span class="p">(</span><span class="s2">&quot;sqlite://lazie2.db&quot;</span><span class="p">,</span> <span class="n">migrate</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> </span><span id="L-78"><a name="L-78"></a> </span><span id="L-79"><a name="L-79"></a> <span class="n">db</span><span class="o">.</span><span class="n">define_table</span><span class="p">(</span><span class="s2">&quot;category&quot;</span><span class="p">,</span> </span><span id="L-80"><a name="L-80"></a> <span class="n">Field</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">),</span> </span><span id="L-81"><a name="L-81"></a> <span class="n">format</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">%(name)s</span><span class="s2">&quot;</span> </span><span id="L-82"><a name="L-82"></a> <span class="p">)</span> </span><span id="L-83"><a name="L-83"></a> </span><span id="L-84"><a name="L-84"></a> </span><span id="L-85"><a name="L-85"></a> <span class="n">db</span><span class="o">.</span><span class="n">define_table</span><span class="p">(</span><span class="s2">&quot;product&quot;</span><span class="p">,</span> </span><span id="L-86"><a name="L-86"></a> <span class="n">Field</span><span class="p">(</span><span class="s2">&quot;name&quot;</span><span class="p">),</span> </span><span id="L-87"><a name="L-87"></a> <span class="n">Field</span><span class="p">(</span><span class="s2">&quot;category&quot;</span><span class="p">,</span> <span class="s2">&quot;reference category&quot;</span><span class="p">),</span> </span><span id="L-88"><a name="L-88"></a> <span class="n">format</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">%(name)s</span><span class="s2">&quot;</span> </span><span id="L-89"><a name="L-89"></a> <span class="p">)</span> </span><span id="L-90"><a name="L-90"></a> </span><span id="L-91"><a name="L-91"></a> <span class="k">print</span> <span class="n">db</span><span class="o">.</span><span class="n">tables</span> <span class="c1"># This is a list of future tables</span> </span><span id="L-92"><a name="L-92"></a> </span><span id="L-93"><a name="L-93"></a> <span class="c1">###############################################</span> </span><span id="L-94"><a name="L-94"></a> <span class="c1"># Until here nothing is touched in db.</span> </span><span id="L-95"><a name="L-95"></a> <span class="c1"># The definitions resides in db object (dicts)</span> </span><span id="L-96"><a name="L-96"></a> <span class="c1">##############################################</span> </span><span id="L-97"><a name="L-97"></a> </span><span id="L-98"><a name="L-98"></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">db</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">category</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span> <span class="c1"># here, the db is suposed to be lazy Defined.</span> </span><span id="L-99"><a name="L-99"></a> </span><span id="L-100"><a name="L-100"></a> </span><span id="L-101"><a name="L-101"></a> </span><span id="L-102"><a name="L-102"></a><span class="c1">##################################################</span> </span><span id="L-103"><a name="L-103"></a><span class="c1"># OUTPUT</span> </span><span id="L-104"><a name="L-104"></a><span class="c1">##################################################</span> </span><span id="L-105"><a name="L-105"></a> </span><span id="L-106"><a name="L-106"></a><span class="p">{</span><span class="s1">&#39;args&#39;</span><span class="p">:</span> <span class="p">(</span><span class="s1">&#39;sqlite://lazie2.db&#39;</span><span class="p">,),</span> <span class="s1">&#39;kwargs&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;migrate&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">}}</span> </span><span id="L-107"><a name="L-107"></a><span class="n">trying</span> <span class="n">to</span> <span class="n">get</span> <span class="n">_lazytables</span> </span><span id="L-108"><a name="L-108"></a><span class="n">key</span> <span class="ow">is</span> <span class="n">lazytables</span> </span><span id="L-109"><a name="L-109"></a><span class="n">getting</span> <span class="n">lazytables</span> </span><span id="L-110"><a name="L-110"></a><span class="p">{</span><span class="s1">&#39;category&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;fields&#39;</span><span class="p">:</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">gluon</span><span class="o">.</span><span class="n">dal</span><span class="o">.</span><span class="n">Field</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x2909950</span><span class="o">&gt;</span><span class="p">,),</span> <span class="s1">&#39;kwargs&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(name)s</span><span class="s1">&#39;</span><span class="p">}}}</span> </span><span id="L-111"><a name="L-111"></a><span class="p">{</span><span class="s1">&#39;category&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;fields&#39;</span><span class="p">:</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">gluon</span><span class="o">.</span><span class="n">dal</span><span class="o">.</span><span class="n">Field</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x2909950</span><span class="o">&gt;</span><span class="p">,),</span> <span class="s1">&#39;kwargs&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(name)s</span><span class="s1">&#39;</span><span class="p">}},</span> <span class="s1">&#39;product&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;fields&#39;</span><span class="p">:</span> <span class="p">(</span><span class="o">&lt;</span><span class="n">gluon</span><span class="o">.</span><span class="n">dal</span><span class="o">.</span><span class="n">Field</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x2909990</span><span class="o">&gt;</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">gluon</span><span class="o">.</span><span class="n">dal</span><span class="o">.</span><span class="n">Field</span> <span class="nb">object</span> <span class="n">at</span> <span class="mh">0x29099d0</span><span class="o">&gt;</span><span class="p">),</span> <span class="s1">&#39;kwargs&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">%(name)s</span><span class="s1">&#39;</span><span class="p">}}}</span> </span><span id="L-112"><a name="L-112"></a><span class="p">[</span><span class="s1">&#39;category&#39;</span><span class="p">,</span> <span class="s1">&#39;product&#39;</span><span class="p">]</span> </span><span id="L-113"><a name="L-113"></a><span class="n">trying</span> <span class="n">to</span> <span class="n">get</span> <span class="n">category</span> </span><span id="L-114"><a name="L-114"></a><span class="n">key</span> <span class="ow">is</span> <span class="n">table</span> </span><span id="L-115"><a name="L-115"></a><span class="n">Lazy</span> <span class="n">defining</span> <span class="n">category</span> </span><span id="L-116"><a name="L-116"></a><span class="n">trying</span> <span class="n">to</span> <span class="n">get</span> <span class="n">_db</span> </span><span id="L-117"><a name="L-117"></a><span class="n">key</span> <span class="ow">is</span> <span class="n">db</span> </span><span id="L-118"><a name="L-118"></a><span class="n">table</span> <span class="n">definitions</span> <span class="p">[</span><span class="s1">&#39;category&#39;</span><span class="p">]</span> </span><span id="L-119"><a name="L-119"></a><span class="n">trying</span> <span class="n">to</span> <span class="n">get</span> <span class="n">_db</span> </span><span id="L-120"><a name="L-120"></a><span class="n">key</span> <span class="ow">is</span> <span class="n">db</span> </span><span id="L-121"><a name="L-121"></a><span class="n">db</span> <span class="n">definition</span> <span class="mi">1</span> </span><span id="L-122"><a name="L-122"></a><span class="n">Traceback</span> <span class="p">(</span><span class="n">most</span> <span class="n">recent</span> <span class="n">call</span> <span class="n">last</span><span class="p">):</span> </span><span id="L-123"><a name="L-123"></a> <span class="n">File</span> <span class="s2">&quot;/home/bcr/projects/lazydal/applications/welcome/modules/lazyedal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">92</span><span class="p">,</span> <span class="ow">in</span> <span class="o">&lt;</span><span class="n">module</span><span class="o">&gt;</span> </span><span id="L-124"><a name="L-124"></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">db</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">category</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span> </span><span id="L-125"><a name="L-125"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">6333</span><span class="p">,</span> <span class="ow">in</span> <span class="n">select</span> </span><span id="L-126"><a name="L-126"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">_adapter</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">query</span><span class="p">,</span><span class="n">fields</span><span class="p">,</span><span class="n">attributes</span><span class="p">)</span> </span><span id="L-127"><a name="L-127"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1274</span><span class="p">,</span> <span class="ow">in</span> <span class="n">select</span> </span><span id="L-128"><a name="L-128"></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_select</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">fields</span><span class="p">,</span> <span class="n">attributes</span><span class="p">)</span> </span><span id="L-129"><a name="L-129"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1672</span><span class="p">,</span> <span class="ow">in</span> <span class="n">_select</span> </span><span id="L-130"><a name="L-130"></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">SQLiteAdapter</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_select</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">fields</span><span class="p">,</span> <span class="n">attributes</span><span class="p">)</span> </span><span id="L-131"><a name="L-131"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1156</span><span class="p">,</span> <span class="ow">in</span> <span class="n">_select</span> </span><span id="L-132"><a name="L-132"></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">common_filter</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="n">tablenames</span><span class="p">)</span> </span><span id="L-133"><a name="L-133"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">1585</span><span class="p">,</span> <span class="ow">in</span> <span class="n">common_filter</span> </span><span id="L-134"><a name="L-134"></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="p">[</span><span class="n">tablename</span><span class="p">]</span> </span><span id="L-135"><a name="L-135"></a> <span class="n">File</span> <span class="s2">&quot;/usr/lib/pymodules/python2.7/gluon/dal.py&quot;</span><span class="p">,</span> <span class="n">line</span> <span class="mi">5113</span><span class="p">,</span> <span class="ow">in</span> <span class="n">__getitem__</span> </span><span id="L-136"><a name="L-136"></a> <span class="k">return</span> <span class="nb">dict</span><span class="o">.</span><span class="n">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> </span><span id="L-137"><a name="L-137"></a><span class="ne">KeyError</span><span class="p">:</span> <span class="s1">&#39;category&#39;</span> </span><span id="L-138"><a name="L-138"></a><span class="p">[</span><span class="n">Finished</span> <span class="ow">in</span> <span class="mf">0.3</span><span class="n">s</span> <span class="k">with</span> <span class="nb">exit</span> <span class="n">code</span> <span class="mi">1</span><span class="p">]</span> </span><span id="L-139"><a name="L-139"></a> </span><span id="L-140"><a name="L-140"></a><span class="c1">###################################################</span> </span><span id="L-141"><a name="L-141"></a><span class="c1"># SQLITE is created, migration file created</span> </span><span id="L-142"><a name="L-142"></a><span class="c1"># sql.log created</span> </span><span id="L-143"><a name="L-143"></a><span class="c1">###################################################</span> </span></pre></div> </td></tr></table>
dev, snipt-expand, web2py

PHP

/dev/net/tun

1
2
3
4
5
6
7
8
mkdir /dev/net (if it doesn't exist already)
39	     mknod /dev/net/tun c 10 200
40	  
41	  Set permissions:
42	     e.g. chmod 0666 /dev/net/tun


http://www.mjmwired.net/kernel/Documentation/networking/tuntap.txt
https://snipt.net/embed/15d5c3fabaed5ef4ff270e740748fa20/
/raw/15d5c3fabaed5ef4ff270e740748fa20/
15d5c3fabaed5ef4ff270e740748fa20
php
PHP
8
2019-07-07T19:59:05
True
False
False
/api/public/snipt/10566/
devnettun
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1">1</a> <a href="#L-2">2</a> <a href="#L-3">3</a> <a href="#L-4">4</a> <a href="#L-5">5</a> <a href="#L-6">6</a> <a href="#L-7">7</a> <a href="#L-8">8</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="x">mkdir /dev/net (if it doesn&#39;t exist already)</span> </span><span id="L-2"><a name="L-2"></a><span class="x">39 mknod /dev/net/tun c 10 200</span> </span><span id="L-3"><a name="L-3"></a><span class="x">40 </span> </span><span id="L-4"><a name="L-4"></a><span class="x">41 Set permissions:</span> </span><span id="L-5"><a name="L-5"></a><span class="x">42 e.g. chmod 0666 /dev/net/tun</span> </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a> </span><span id="L-8"><a name="L-8"></a><span class="x">http://www.mjmwired.net/kernel/Documentation/networking/tuntap.txt</span> </span></pre></div> </td></tr></table>
dev, tun

CSS

ie6 min... max-width fix

1
2
3
#wrapper {
width:expression(document.body.clientWidth<=915?'915px':(document.body.clientWidth>1700?'1700px':'100%'))
}
https://snipt.net/embed/d77200f1c83da609c5fccbaab204d1be/
/raw/d77200f1c83da609c5fccbaab204d1be/
d77200f1c83da609c5fccbaab204d1be
css
CSS
3
2019-06-29T15:23:16
True
False
False
/api/public/snipt/4219/
ie6-max-width-fix
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1">1</a> <a href="#L-2">2</a> <a href="#L-3">3</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="nn">#wrapper</span> <span class="p">{</span> </span><span id="L-2"><a name="L-2"></a><span class="nb">width</span><span class="o">:</span><span class="n">expression</span><span class="p">(</span><span class="n">document</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">clientWidth</span><span class="o">&lt;=</span><span class="m">915</span><span class="o">?</span><span class="s1">&#39;915px&#39;</span><span class="o">:</span><span class="p">(</span><span class="n">document</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">clientWidth</span><span class="o">&gt;</span><span class="m">1700</span><span class="o">?</span><span class="s1">&#39;1700px&#39;</span><span class="o">:</span><span class="s1">&#39;100%&#39;</span><span class="p">))</span> </span><span id="L-3"><a name="L-3"></a><span class="p">}</span> </span></pre></div> </td></tr></table>
css, dev, html