<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kipb7&#039;s Weblog</title>
	<atom:link href="http://kipb7.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kipb7.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sat, 15 Oct 2011 02:52:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='kipb7.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Kipb7&#039;s Weblog</title>
		<link>http://kipb7.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://kipb7.wordpress.com/osd.xml" title="Kipb7&#039;s Weblog" />
	<atom:link rel='hub' href='http://kipb7.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PyODBC, UnixODBC, FreeTDS &#8211; config</title>
		<link>http://kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/</link>
		<comments>http://kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 18:24:50 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=12</guid>
		<description><![CDATA[We wanted to move our Pylons application from Windows to Linux (hosted on Westhost), and still connect to our MS SQL database out there. It&#8217;d be simpler and faster to use a local MySQL also hosted on Westhost, perhaps, but that&#8217;ll come later. SQLAlchemy (that we&#8217;re using in Pylons for database access) will work with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=12&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We wanted to move our Pylons application from Windows to Linux (hosted on Westhost), and still connect to our MS SQL database out there.  It&#8217;d be simpler and faster to use a local MySQL also hosted on Westhost, perhaps, but that&#8217;ll come later.</p>
<p>SQLAlchemy (that we&#8217;re using in Pylons for database access) will work with PyMSSQL, PyODBC, and adodbapi.  We&#8217;re using PyODBC (because PyMSSQL couldn&#8217;t connect with integrated security, and didn&#8217;t look into adodbapi.)</p>
<p>UnixODBC is a &#8220;Driver Manager.&#8221;  This must be built first.<br />
Easysoft has an &#8220;ODBC-SQL Server Driver&#8221; ($$).  <a href="http://www.freetds.org">FreeTDS</a> is an alternative Driver.  One of these is built next.<br />
PyODBC is the Python-specific part, and must be built against a driver manager (unixODBC).  This is built last.</p>
<p>We&#8217;re using SQL Server 2005, so we need TDS Version 8.0.</p>
<p>Problem: Couldn&#8217;t get jsonlib installed on Westhost (easy_install didn&#8217;t support https), so we switched to simplejson.  Not too hard except that we needed to support &#8220;ordered dictionaries&#8221; so that json output would be in the same order as we put items in a hash {&#8216;a&#8217;:1,&#8217;b':2} for example.  Doesn&#8217;t really matter but it makes life easier when debugging or reading json.  We updated to simplejson 1.9.1 along the way, and had to update the python path in .htaccess mod_python set-up, which is now in /etc/httpd/conf/httpd.conf.</p>
<p>Problem: Apache/mod_python couldn&#8217;t <em>import pyodbc</em>.  The problem was environment variable LD_LIBRARY_PATH which didn&#8217;t seem to include /usr/local/lib.  You can&#8217;t set this from within Python so you must put it in /etc/ld.so.conf &#8212; hey, it was already there!  Then you do ldconfig.  This fixed the problem.</p>
<p>Problem: Couldn&#8217;t get &#8220;whole thing&#8221; (access database from SQL Alchemy) working, so needed to break apart and test each part freetds/unixodbc/pyodbc/sqlAlchemy separately.  Fortunately, you can test just freetds, without using /usr/local/etc/freetds.conf by doing <em>tsql -H mydbhost.com -p 1433 -U myuser -P mypasswd</em>, and when you get that working, edit your freetds.conf to put in a server.  You should set up a trace file in the [global] section (but be sure to remove it before running any serious traffic!)  <em>dump file = stdout</em> will be useful.  Add lines like<br /><code>[myServer]<br />host = mydbhost.com<br />port = 1433<br />tds version = 8.0</code></p>
<p>Now you can test using <em>tsql -S myServer -U user -P passwd</em> (omit -H -p).  This tests what&#8217;s in freetds.conf.</p>
<p>Next test with isql which uses unixODBC.  You can edit /usr/local/etc/odbcinst.ini to put in<br />
<code>[TDS]<br />
Description = FreeTDS Driver<br />
Driver = /usr/local/lib/libtdsodbc.so<br />
Setup=/usr/local/lib/libtdsS.so<br />
UsageCount = 1</code></p>
<p>And in odbc.ini, create a DSN (you don&#8217;t actually need to use DSN&#8217;s but that&#8217;s what I did.)<br /><code>[MyDSN]<br />
Description=my dsn<br />
Driver=TDS<br />
Database=yourdb<br />
Servername=myServer</code></p>
<p>Do NOT start any lines in odbc.ini with spaces &#8212; cost me a few hours!</p>
<p>Now on to pyodbc.  You can test with:<br />
<code>$ python<br />
import pyodbc<br />
cnxn = pyodbc.connect("DSN=MyDSN;UID=user;PWD=pwd")<br />
cursor = cnxn.cursor()<br />
cursor.execute("select 2+2 as [Result]")<br />
for row in cursor:<br />
  &nbsp; print row.Result</code></p>
<p>And finally to test SQL Alchemy:<br />
<code>$ python<br />
import sqlalchemy as sa<br />
eng = sa.create_engine("mssql://usernm:pwd@/?dsn=MyDSN",echo=True)<br />
res = eng.execute('select 1+1 as foo')<br />
for row in res:<br />
  &nbsp; print 'answer=',row['foo']<br />
</code></p>
<p>You might want to do some of these tests within the Apache/mod_python context  The main problems I had along those lines were Python&#8217;s path (solved in earlier post in .htaccess or in httpd.conf) and LD_LIBRARY_PATH solved above.</p>
<p>New problem: Doing an update works in isql but fails in sqlalchemy, saying there is a datatype incompatibility (updating int with varchar).</p>
<p>Summary of free software layers we&#8217;re using in this project:<br />
pylons (mako, sqlalchemy, simplejson), dojo, python, apache, mod_python, pyodbc, simplejson, unixODBC, freetds.  Probably a dozen more I&#8217;ll remember later!  We&#8217;re using Wing IDE Pro ($$) for editing under Windows, and vim for editing on westhost.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=12&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/06/12/pyodbc-unixodbc-freetds-config/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>Pylons on Westhost</title>
		<link>http://kipb7.wordpress.com/2008/05/22/pylons-on-westhost/</link>
		<comments>http://kipb7.wordpress.com/2008/05/22/pylons-on-westhost/#comments</comments>
		<pubDate>Thu, 22 May 2008 15:47:26 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=6</guid>
		<description><![CDATA[How to get Pylons working on Westhost 3.0 (WH). This assumes you have SSH (like telnet) access to your Westhost account, but you can do most of this using FTP or the westhost control panel file manager, if you prefer. We had previously tried and failed to install pylons (prior to Westhost 3.0), so decided [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=6&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><b>How to get Pylons working on Westhost 3.0</b> (WH).<br />
This assumes you have SSH (like telnet) access to your Westhost account, but you can do most of this using FTP or the westhost control panel file manager, if you prefer.</p>
<p>We had previously tried and failed to install pylons (prior to Westhost 3.0), so decided to use Virtual Python instead, where you can change whatever you like. It makes ~/bin ~/include ~/lib to replace the system versions, and when you run python, it runs ~/bin/python and uses your lib etc.<br />
Just grab virtual-python.py and run it.  (It&#8217;s possible you don&#8217;t need Virtual Python under WH 3.0, don&#8217;t know.)</p>
<p>Now you can get ez_setup.py and do <i>python ez_setup.py</i> which gives you easy_install, which you&#8217;ll use for installing most other things.   Then do easy_install -U setuptools, easy_install pylons, easy_install sqlalchemy. These all went into ~/wherever (not the system directories.)</p>
<p>Now you can cd ~/www and <i>paster create -t pylons prj</i><br />
which creates a project called <u>prj</u> (our version of helloworld). cd prj and edit development.ini to put in your domain name (yourdomain.com) instead of 0.0.0.0 and change the port from 5000 to 81. You can serve your new site with: <i>paster serve &#8211;reload development.ini</i><br />
(~/www/prj/prj/public/index.html is the default page).  </p>
<p>With your web browser, go to http://yoursite.com:81/ and you should see your new site.</p>
<p><b>How do we get this served from the usual Apache 2.0 (so we don&#8217;t have to run paster) ?</b></p>
<p>Pylons can run using mod_python, which is a way for Apache to include the Python interpreter.<br />
Westhost 3.0 already supports mod_python.  You can verify this by adding these lines to /etc/httpd/conf/httpd.conf: <code>&lt;Location /mpinfo&gt;<br />
  SetHandler mod_python<br />
  PythonHandler mod_python.testhandler<br />
&lt;/Location&gt;</code><br />
You can <i>apachectl restart</i> to restart your web server (or Restart Account from WH Site Manager).<br />
And then with your web browser, going to http://yoursite.com/mpinfo</p>
<p>See pylonshq.com, <i>Production deployment using mod_python</i> and put wsgi.py into your ~/lib/python2.5/site-packages/mod_python/ folder (I actually put it into /usr/local/python/lib/python2.5/site-packages/mod_python).</p>
<p>cp development.ini production.ini #copy file<br />
edit production.ini #using vi, pico, whatever you know<br />
remove comment character from line: #set debug=false (so now it will set debug=false)<br />
create startup.py containing these two lines:<br />
<code><br />
 from paste.deploy import loadapp<br />
 app = loadapp("config:/var/www/html/prj/production.ini")<br />
</code><br />
create .htaccess containing:<br />
<code><br />
 SetHandler mod_python<br />
 PythonHandler mod_python.wsgi<br />
 PythonPath "['/var/www/html/prj', stuff explained below] + sys.path"<br />
 PythonOption wsgi.application startup::app<br />
 PythonOption SCRIPT_NAME /prj<br />
</code></p>
<p>The _stuff explained below_ is the path info that your new python has:<br />
python #run your virtual python<br />
import sys<br />
print sys.path<br />
copy all the path places you see into _stuff_ above, except the first empty one &#8216; &#8216;.</p>
<p>Now you can go to your web browser:<br />
http://www.yourdomain.com/prj/  #and you should see the default page ~/www/prj/prj/public/index.html, this time served by Apache.</p>
<p>It answers on port 80, regardless of the domain/port in your production.ini, which is only used by paster.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=6&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/05/22/pylons-on-westhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON Dates and Dojo Grid identifier=primary key for multiple columns</title>
		<link>http://kipb7.wordpress.com/2008/05/02/json-dates-and-dojo-grid-identifierprimary-key-for-multiple-columns/</link>
		<comments>http://kipb7.wordpress.com/2008/05/02/json-dates-and-dojo-grid-identifierprimary-key-for-multiple-columns/#comments</comments>
		<pubDate>Fri, 02 May 2008 15:25:05 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[identifier]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=10</guid>
		<description><![CDATA[Problem: JSON doesn&#8217;t specify a date format.  Dojo wants json dates in the form {_type:&#8217;Date&#8217;,_value:&#8217;2007-12-31T12:34:56.789&#8242;}.  Using jsonlib.write&#8217;s on_unknown handler, we can test for the datetime type and format it in this way.  On the way back, when items are changed in the browser, we did Date.prototype.json = function() {return dateFormat(this)}, so that dojo.toJson would know [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=10&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Problem: JSON doesn&#8217;t specify a date format.  Dojo wants json dates in the form <em>{_type:&#8217;Date&#8217;,_value:&#8217;2007-12-31T12:34:56.789&#8242;}</em>.  Using jsonlib.write&#8217;s on_unknown handler, we can test for the datetime type and format it in this way.  On the way back, when items are changed in the browser, we did <em>Date.prototype.json = function() {return dateFormat(this)}</em>, so that dojo.toJson would know how to format dates.  This means that &#8220;json&#8221; is using two different formats for the two directions (an object on the way to browser and a string on the way back to server.)  The string format for the date itself is the same in the two directions (which took some work since dojo appends the time zone offset but Python&#8217;s datetime&#8217;s .isoformat function does not, and there are some milliseconds/microseconds issues.)</p>
<p>Next problem: Dojo grid (ItemFileReadStore, actually) likes to have an &#8216;identifier&#8217; column, which is used to quickly find a row (&#8216;item&#8217;).  We have some tables that have multi-column primary keys (PKs).  I had first just been lazy and used the 1st column of the PK, but Dojo was smart enough to see that wasn&#8217;t unique when I used real data.  I looked at perhaps a hundred dojo grid data examples, and EVERY ONE had a single-column primary key.  However, you can use an OBJECT for identifier, and if it has a .toString() method then you might be able to have it combine the primary key columns on-the-fly <em>{x:10,y:20,toString:function(){return this.x+&#8217;|'+this.y}}.</em>  I&#8217;m thinking this will be messy because 1) jsonlib won&#8217;t know how to emit a javascript function; 2) didn&#8217;t figure out how the object&#8217;s toString function references the item&#8217;s data columns (does this.pk0 work?); 3) what if we change a PK&#8217;s value?  &#8220;<span class="objectBox objectBox-errorMessage opened"><em>ItemFileWriteStore does not have support for changing the value of an item&#8217;s identifier</em>&#8220;</span>.</p>
<p>The plan at the moment is one of: 1) construct our own new one-column primary key that is a concatenation of the actual primary key columns, such as NJ|Trenton.  This won&#8217;t be shown on the grid, and for now, there is no editing of PK values anyway.  2) just use a sequence number and fix when we finally have some use for the identifier; 3) switch to the &#8216;table&#8217; format where we don&#8217;t need an identifier.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=10&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/05/02/json-dates-and-dojo-grid-identifierprimary-key-for-multiple-columns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>Pylons, MSSQL, SQL Alchemy</title>
		<link>http://kipb7.wordpress.com/2008/04/25/pylons-mssql-sql-alchemy/</link>
		<comments>http://kipb7.wordpress.com/2008/04/25/pylons-mssql-sql-alchemy/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 14:03:30 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=9</guid>
		<description><![CDATA[We wanted to have JavaScript pass JSON notation {&#8220;such&#8221;:&#8221;as&#8221;,&#8221;this&#8221;:["example",2],&#8221;here&#8221;:{}} to Pylons and then have Pylons interpret it as a Python object.  Django includes a serializer but Pylons did not seem to (see note below.)  TurboGears has the @jsonify decorator.  There are several json packages out there we could use.  I typed easy_install jsonlib and it was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=9&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We wanted to have JavaScript pass JSON notation {&#8220;such&#8221;:&#8221;as&#8221;,&#8221;this&#8221;:["example",2],&#8221;here&#8221;:{}} to Pylons and then have Pylons interpret it as a Python object.  Django includes a serializer but Pylons did not seem to (see note below.)  TurboGears has the @jsonify decorator.  There are several json packages out there we could use.  I typed <em>easy_install jsonlib</em> and it was ready to use.  import jsonlib and then either python_object = jsonlib.read(&#8220;&#8221;"{&#8220;some&#8221;:&#8221;json&#8221;}&#8221;"&#8221;) or string_output = jsonlib.write(python_obj). </p>
<p>Note: it seems Pylons also has the @jsonify decorator (you put it in front of your action function) also see decorators/__init__.py, which uses simplejson, but I didn&#8217;t find it when I was looking for json and pylons!  I believe the default 0.9.6 Pylons also includes simplejson, so I didn&#8217;t need to get jsonlib.</p>
<p>Anyway, jsonlib works fine and it won&#8217;t be hard to switch if needed later on.</p>
<p>Next problem: We wanted to connect to a Microsoft SQL Server (MSSQL) using a &#8220;Trusted Connection&#8221; instead of username/password.  We were using PyMssql.py which worked fine up until then.  We struggled to figure out how to pass the &#8220;TrustedConnection=Yes&#8221; bit and not the UID=sa etc.  It turns out that pymssql is not capable of that, so we switched to pyodbc which does the trick.  There are yet other alternatives including a commercial one (mxodbc for $140) but this works for now.</p>
<p>Next problem: Some of our tables have integer primary keys, which properly should be auto-incrementing.  Due to issues when moving back and forth between SQL Servers, we made those tables NOT have auto-increment primary keys.  We would do <em>Declare @x int  Select @x = 1+max([ID]) from Table_name</em> and then <em>Insert into Table_name Values (@x, &#8230;)</em> which is risky in the case of two simultaneous inserts (2nd attempt may get a duplicate key error.)  In SQL Alchemy we used, in the Table and Column declaration, <em>default=text (&#8220;1+(select max([ID]) from Table_name)&#8221;)</em> but MS SQL won&#8217;t allow a Select in the value of an Insert.  Fortunately, SQL Alchemy (SA) lets you put <em>preexecute_pk_sequences=True</em> up at the top of <em>class MSSQLDialect_pyodbc</em> and that did the trick.  That makes it do the Select 1+Max&#8230; first and then use its result value in the Insert.  It seems that SA is doing a round-trip here as opposed to the @x variable approach above which doesn&#8217;t require an extra round trip.  This means it&#8217;s slower and more likely to have a collision but we&#8217;ll switch to true auto-increment someday!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=9&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/04/25/pylons-mssql-sql-alchemy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>More SQLAlchemy &#8211; column names with spaces, schema</title>
		<link>http://kipb7.wordpress.com/2008/03/29/more-sqlalchemy-column-names-with-spaces-schema/</link>
		<comments>http://kipb7.wordpress.com/2008/03/29/more-sqlalchemy-column-names-with-spaces-schema/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 01:23:48 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=8</guid>
		<description><![CDATA[A few struggles because we had spaces (and other funny characters) in our column names, and had a &#8216;schema&#8217; (formerly, owner) in ms sql.  Figured out how to automatically create a &#8216;key&#8217; for each column: make a mapper shim function that removes the bad characters from the column name, making it into a valid Python [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=8&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few struggles because we had spaces (and other funny characters) in our column names, and had a &#8216;schema&#8217; (formerly, owner) in ms sql.  Figured out how to automatically create a &#8216;key&#8217; for each column: make a mapper shim function that removes the bad characters from the column name, making it into a valid Python identifier. From our model python source:</p>
<p><code>from sqlalchemy.orm import mapper as sa_mapper<br />
import re<br />
colname_omit_re = re.compile("[^A-Za-z0-9_]") #match funny chars to remove<br />
def mapper(cls, tbl, **kwargs):<br />
"Our own mapper that adds Python-identifier-suitable key for multi-word column names"<br />
kprop = kwargs.get('properties',None) # use existing<br />
for c in tbl.c:<br />
  key = colname_omit_re.sub("",c.name) # omit bads<br />
  if key != c.name:<br />
    if not kprop: kprop = {}<br />
    if not kprop.has_key(key): kprop[key] = c # allow override in mapper call<br />
if kprop: kwargs['properties'] = kprop # set, if new<br />
return sa_mapper(cls, tbl, **kwargs)<br />
</code></p>
<p>Each Column() specification (within Table()) had to include parameter <i>schema=&#8217;albert&#8217;</i> (if albert was our schema!), and also when we used foreign keys: <i>ForeignKeyConstraint(['Col Name'], ['albert.JoeTableName.Column Name'], name=&#8221;explanation of some kind&#8221;)</i></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=8&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/03/29/more-sqlalchemy-column-names-with-spaces-schema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>Pylons, SQLAlchemy</title>
		<link>http://kipb7.wordpress.com/2008/03/14/pylons-sqlalchemy/</link>
		<comments>http://kipb7.wordpress.com/2008/03/14/pylons-sqlalchemy/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 02:08:04 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[sqlautocode]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=5</guid>
		<description><![CDATA[Installed SQLAlchemy: easy_install SQLAlchemy Trying the tutorial at http://docs.pythonweb.org/display/pylonscookbook/Making+a+Pylons+Blog Did all steps without incident using sqlite and the MyBlog folder name, etc. and the &#8220;blog&#8221; works fine. Where is the SQL magic happening? In the blog controller (blog.py) in its index function: q = model.Session.query(model.Blog) c.posts = q.limit(5) return render("/blog/index.html") Now looking at sqlautocode, which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=5&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Installed SQLAlchemy: easy_install SQLAlchemy</p>
<p>Trying the tutorial at <a href="http://docs.pythonweb.org/display/pylonscookbook/Making+a+Pylons+Blog">http://docs.pythonweb.org/display/pylonscookbook/Making+a+Pylons+Blog</a></p>
<p>Did all steps without incident using sqlite and the MyBlog folder name, etc. and the &#8220;blog&#8221; works fine. Where is the SQL magic happening? In the blog controller (blog.py) in its index function:</p>
<pre>
     q = model.Session.query(model.Blog)
     c.posts = q.limit(5)
     return render("/blog/index.html")</pre>
<p>Now looking at sqlautocode, which needs pymssql.  Found and installed (using .zip for Python 2.5).  Modified autocode so I didn&#8217;t have to use command line, see below.  One problem was that the tables in the database were NOT in the default dbo schema, but in &#8220;myschema&#8221; (another name actually), so had to specify this:</p>
<pre>#File autocode.py
import sqlautocode
command = "mssql://sqlusername:sqlpass@sqlserver.dummy.net/sqldatabase -s myschema -t tablewildcard* --noindexes --output out.py"
argv = ("autocode "+command).split(" ")
sqlautocode.main(argv) #File sqlautocode\__init__.py
#def main(myargv):
#    config.configure(myargv)</pre>
<p>Tried it without &#8211;noindexes, but get &#8220;It seems that this dialect does not support indexes!&#8221;  Foreign keys seem OK so far, and schema is passed in the output file.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=5&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/03/14/pylons-sqlalchemy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>Dojo, Dojox, dojox.grid</title>
		<link>http://kipb7.wordpress.com/2008/02/16/dojo-dojox-dojoxgrid/</link>
		<comments>http://kipb7.wordpress.com/2008/02/16/dojo-dojox-dojoxgrid/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 23:05:13 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[helloworld]]></category>
		<category><![CDATA[paster]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=4</guid>
		<description><![CDATA[Discovered some wonders of grids, charts, etc. using dojo and dojox.grid.  Looks to be cool. On my Windows system, installed easy_install (you run one python program), added python25/scripts onto my Windows path (control panel, system, advanced, environment variables), installed pylons (paste one line into DOS command box).  Installed helloworld example: paster create -t pylons helloworld Started [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=4&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Discovered some wonders of grids, charts, etc. using dojo and dojox.grid.  Looks to be cool.</p>
<p>On my Windows system, installed easy_install (you run one python program),<br />
added python25/scripts onto my Windows path (control panel, system, advanced, environment variables),<br />
installed pylons (paste one line into DOS command box). <br />
Installed helloworld example: <em>paster create -t pylons helloworld</em><br />
Started pylons server: <em>paster serve &#8211;reload development.ini<br />
</em>and accessed a web page at <a href="http://localhost:5000/">http://localhost:5000/</a>!</p>
<p>Continuing with the instructions in: <a href="http://wiki.pylonshq.com/display/pylonsdocs/Getting+Started">http://wiki.pylonshq.com/display/pylonsdocs/Getting+Started</a><br />
We start an application: <em>paster controller hello<br />
</em>However, this gives an error: Command controller not known. Maybe I&#8217;m in the wrong subdirectory?<br />
Ok, look at the web page from localhost:5000 above (index.html), which says to first<br />
remove index.html, edit the routes in helloworld/config/routing.py to &#8220;point the root path to a hello controller we&#8217;ll create&#8221;<br />
 <em>map.connect(&#8221;, controller=&#8217;hello&#8217;, action=&#8217;index&#8217;)<br />
</em>and THEN do <em>paster controller hello</em><br />
This time, no error.  It created hello.py.</p>
<p><a href="http://localhost:5000/hello">http://localhost:5000/hello</a> now gives the output from this hello.py controller.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=4&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/02/16/dojo-dojox-dojoxgrid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
		<item>
		<title>Django to Pylons?</title>
		<link>http://kipb7.wordpress.com/2008/02/15/django-to-pylons/</link>
		<comments>http://kipb7.wordpress.com/2008/02/15/django-to-pylons/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 16:29:08 +0000</pubDate>
		<dc:creator>kipb7</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Pylons]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://kipb7.wordpress.com/?p=3</guid>
		<description><![CDATA[We converted the existing database schema for Django, including adding numeric ID columns where we had multiple column keys.  Django is helpful in that you instantly get maintenance pages for the tables, for adding/changing/deleting records.  We&#8217;d also like to see joins and &#8216;maintain&#8217; the data from that view, without having to go find the individual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=3&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We converted the existing database schema for Django, including adding numeric ID columns where we had multiple column keys.  Django is helpful in that you instantly get maintenance pages for the tables, for adding/changing/deleting records.  We&#8217;d also like to see joins and &#8216;maintain&#8217; the data from that view, without having to go find the individual row in its own table. </p>
<p>There were frustrations with Django, as I&#8217;m sure one would have with any new platform.  There is a &#8220;book&#8221; online, but several of the examples didn&#8217;t work and when looking online for help, it was hard to find the answers.  Django doesn&#8217;t seem to help much with reporting.  Our reports need multi table joins and summaries,</p>
<p>I was excited to read about SQLAlchemy and how it handles a lot of fancy database ideas we&#8217;d want.  Not available in Django, and only sort-of available in Turbogears.  Pylons does support it.  Pylons of course is less mature than the other two so no doubt we&#8217;ll run into issues, but now ready to try it out.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/kipb7.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/kipb7.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kipb7.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kipb7.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kipb7.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kipb7.wordpress.com&amp;blog=2882796&amp;post=3&amp;subd=kipb7&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kipb7.wordpress.com/2008/02/15/django-to-pylons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a619ed275496e514b8985c153cb8b467?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kipb7</media:title>
		</media:content>
	</item>
	</channel>
</rss>
