Update of /cvsroot/sqlobject/SOWeb/docs
In directory sc8-pr-cvs1:/tmp/cvs-serv1774/docs
Modified Files:
FAQ.html FAQ.txt default.css
Log Message:
Updated docs
Index: FAQ.html
===================================================================
RCS file: /cvsroot/sqlobject/SOWeb/docs/FAQ.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** FAQ.html 7 Sep 2003 18:21:38 -0000 1.2
--- FAQ.html 7 Sep 2003 19:15:46 -0000 1.3
***************
*** 22,25 ****
--- 22,26 ----
<li><a class="reference" href="#composite-compound-attributes" id="id5" name="id5">Composite/Compound Attributes</a></li>
<li><a class="reference" href="#non-integer-ids" id="id6" name="id6">Non-Integer IDs</a></li>
+ <li><a class="reference" href="#binary-values" id="id7" name="id7">Binary Values</a></li>
</ul>
</div>
***************
*** 276,279 ****
--- 277,316 ----
cannot use strings or other kinds of values.</p>
<p>This restriction will probably be removed soon.</p>
+ </div>
+ <div class="section" id="binary-values">
+ <h1><a name="binary-values">Binary Values</a></h1>
+ <p>Binary values can be difficult to store in databases, as SQL doesn't
+ have a widely-implemented way to express binaries as literals, and
+ there's differing support in database.</p>
+ <p>A possible way to keep this data in a database is by using encoding.
+ Base 64 is a good encoding, reasonably compact but also safe. As
+ an example, imagine you want to store images in the database:</p>
+
+ <pre class="literal-block"><tt><span class="keyword">class</span> <span class="function">Image</span><span class="symbol">(</span><span class="normal">SQLObject</span><span class="symbol">)</span><span class="symbol">:</span>
+
+ <span class="normal">data</span> <span class="symbol">=</span> <span class="function">StringCol</span><span class="symbol">(</span><span class="symbol">)</span>
+ <span class="normal">height</span> <span class="symbol">=</span> <span class="function">IntCol</span><span class="symbol">(</span><span class="symbol">)</span>
+ <span class="normal">width</span> <span class="symbol">=</span> <span class="function">IntCol</span><span class="symbol">(</span><span class="symbol">)</span>
+
+ <span class="keyword">def</span> <span class="function">_set_data</span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">,</span> <span class="normal">value</span><span class="symbol">)</span><span class="symbol">:</span>
+ <span class="normal">self</span><span class="symbol">.</span><span class="function">_SO_set_data</span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">.</span><span class="function">encode</span><span class="symbol">(</span><span class="string">'base64'</span><span class="symbol">)</span><span class="symbol">)</span>
+
+ <span class="keyword">def</span> <span class="function">_get_data</span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">,</span> <span class="normal">value</span><span class="symbol">)</span><span class="symbol">:</span>
+ <span class="keyword">return</span> <span class="normal">self</span><span class="symbol">.</span><span class="function">_SO_get_data</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">.</span><span class="function">decode</span><span class="symbol">(</span><span class="string">'base64'</span><span class="symbol">)</span>
+ </tt></pre>
+ <p>SQLite does not respect backslash quoting, so for instance <tt class="literal"><span class="pre">\n</span></tt> is
+ not interpreted as a newline. For the moment there's no resolution,
+ and this will mess up your base64-encoded values. As a workaround:</p>
+
+ <pre class="literal-block"><tt><span class="keyword">class</span> <span class="function">Image</span><span class="symbol">(</span><span class="normal">SQLObject</span><span class="symbol">)</span><span class="symbol">:</span>
+ <span class="normal">data</span> <span class="symbol">=</span> <span class="function">StringCol</span><span class="symbol">(</span><span class="symbol">)</span>
+
+ <span class="keyword">def</span> <span class="function">_set_data</span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">,</span> <span class="normal">value</span><span class="symbol">)</span><span class="symbol">:</span>
+ <span class="comment"># base64 just ignores whitespace, so we can get rid of \n's</span>
+ <span class="normal">self</span><span class="symbol">.</span><span class="function">_SO_set_data</span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">.</span><span class="function">encode</span><span class="symbol">(</span><span class="string">'base64'</span><span class="symbol">)</span><span class="symbol">.</span><span class="function">replace</span><span class="symbol">(</span><span class="string">'\n'</span><span class="symbol">,</span> <span class="string">''</span><span class="symbol">)</span><span class="symbol">)</span>
+
+ <span class="keyword">def</span> <span class="function">_get_data</span><span class="symbol">(</span><span class="normal">self</span><span class="symbol">)</span><span class="symbol">:</span>
+ <span class="keyword">return</span> <span class="normal">self</span><span class="symbol">.</span><span class="function">_SO_get_data</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">.</span><span class="function">decode</span><span class="symbol">(</span><span class="string">'base64'</span><span class="symbol">)</span>
+ </tt></pre>
</div>
</div>
Index: FAQ.txt
===================================================================
RCS file: /cvsroot/sqlobject/SOWeb/docs/FAQ.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** FAQ.txt 7 Sep 2003 18:21:38 -0000 1.2
--- FAQ.txt 7 Sep 2003 19:15:46 -0000 1.3
***************
*** 154,155 ****
--- 154,177 ----
This restriction will probably be removed soon.
+
+ Binary Values
+ -------------
+
+ Binary values can be difficult to store in databases, as SQL doesn't
+ have a widely-implemented way to express binaries as literals, and
+ there's differing support in database.
+
+ A possible way to keep this data in a database is by using encoding.
+ Base 64 is a good encoding, reasonably compact but also safe. As
+ an example, imagine you want to store images in the database:
+
+ .. raw:: html
+ :file: ../examples/snippets/image-binary.html
+
+ SQLite does not respect backslash quoting, so for instance ``\n`` is
+ not interpreted as a newline. For the moment there's no resolution,
+ and this will mess up your base64-encoded values. As a workaround:
+
+ .. raw:: html
+ :file: ../examples/snippets/image-binary-sqlite.html
+
Index: default.css
===================================================================
RCS file: /cvsroot/sqlobject/SOWeb/docs/default.css,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
|