There's going to be a fantastic week of agile programming activities in this area this coming January!
Begin with The TurboGears Jam in Ann Arbor, MI, Jan. 14 - 16.
On the 17th, drive two hours southeast to Sandusky, OH.
Then, Jan. 18 - 19, attend CodeMash at Kalahari Resort.
I don't know if they planned these events to dovetail so well, but Bruce Eckel is deeply involved in both, so perhaps they did.
Tuesday, November 14, 2006
Girls in IT
This Friday, there's a conference at Sinclair Community College here in Dayton (and other sites in Ohio) called We Are IT Day, designed to encourage high-school girls' participation in information technology.
We Are IT Day website
They're still accepting "lunch buddies" - technology professional women who can chat with a small group of girls over lunch.
And, if you know a girl here in Dayton who should be there, try to make sure she can go!
(Sorry I didn't publicize this earlier - I hadn't found a website for it.)
They're still accepting "lunch buddies" - technology professional women who can chat with a small group of girls over lunch.
And, if you know a girl here in Dayton who should be there, try to make sure she can go!
(Sorry I didn't publicize this earlier - I hadn't found a website for it.)
Tuesday, November 07, 2006
IronPython and Oracle
In my post on "Oracle-free Oracle access", I speculated that using IronPython with Oracle's .NET tools might be an effective way to access the database, but I'd never actually tried it.
Since then, I've been contacted by two people who've not only done it successfully, they've written up nice descriptions with code.
I recommend both blogs - they're in my feed reader.
If you can't read Bernd's post, here's my translation of the text that precedes his script:
Since then, I've been contacted by two people who've not only done it successfully, they've written up nice descriptions with code.
- Oracle Data Provider for .NET under IronPython by Przemek Piotrowski
- A minimal sqlplus clone in IronPython by Bernd Kriszio
I recommend both blogs - they're in my feed reader.
If you can't read Bernd's post, here's my translation of the text that precedes his script:
Here follows the code for a simple IronPython program which enables the interactive input of SQL statements and output from an Oracle database. I use the ODP, which apparently is included with Oracle 10g XE, because I have not installed it separately. In addition, I use the well-known HR demo schema.
After startup, an example session might look like this:
Monday, November 06, 2006
Sunday, November 05, 2006
TurboGears and Oracle
This weekend saw the fulfillment of a lifelong dream - I got TurboGears working against an Oracle database!
For general information, I recommend the ToDo list tutorial and Splee's post on SQLAlchemy/TG. But there are some particulars you'll need to know to work with Oracle... so here's a super-basic example to demonstrate.
You can, of course, manually define the columns of your tables; using autoload is simply more convenient and error-proof. It'll only work against tables that have a primary key, though. If you don't use autoload, you don't need to call bind_meta_data in model.py.
TurboGears has recently added SQLAlchemy, as an alternative to SQLObject, for its database-access layer. I don't know much about their relative merits, but it seems like SQLAlchemy may be more friendly to a database-centered (as opposed to object-programming-centered) point of view. In any case, SQLAlchemy has Oracle support, whereas SQLObject's Oracle support still hasn't been integrated into the main codebase. Thus, I'm using the SQLAlchemy flavor of TurboGears.
For general information, I recommend the ToDo list tutorial and Splee's post on SQLAlchemy/TG. But there are some particulars you'll need to know to work with Oracle... so here's a super-basic example to demonstrate.
- After installing TurboGears, run at the command prompt:
tg-admin quickstart --sqlalchemy
- In dev.cfg, replace
sqlalchemy.dburi="sqlite:///devdata.sqlite"
withsqlalchemy.dburi="oracle://scott:tiger@orcl"
[EDIT April 25, 2007:] Unless you've specifically configured your Oracle database to support Unicode (and maybe even if you have - I'm still fuzzy on this part), you'll also need to setsqlalchemy.convert_unicode=True
If you decide to leave it out, then start gettingSQLError: (NotSupportedError) Variable_TypeByValue(): unhandled data
you'll know you needed this parameter set.
type unicode - Add the following to model.py:
from turbogears.database import bind_meta_data
bind_meta_data()
from sqlalchemy.ext.assignmapper import assign_mapper
emp_table = Table("emp", metadata, autoload=True)
class Emp(object):
pass
assign_mapper(session.context, Emp, emp_table) - To controllers.py, add
then add to the Root class
import model
@expose(template="myProjectName.templates.emps")
def emps(self):
emps_list = model.Emp.select()
return dict(emps=emps_list) - Copy templates/welcome.kid to templates/emps.kid, and replace the document body with
<ul>
<li py:for="emp in emps">
${emp.ename} : ${emp.job}
</li>
</ul> - From the command prompt, run
python start-myProjectName.py
- Point a browser at http://localhost:8080/emps
You can, of course, manually define the columns of your tables; using autoload is simply more convenient and error-proof. It'll only work against tables that have a primary key, though. If you don't use autoload, you don't need to call bind_meta_data in model.py.
TurboGears has recently added SQLAlchemy, as an alternative to SQLObject, for its database-access layer. I don't know much about their relative merits, but it seems like SQLAlchemy may be more friendly to a database-centered (as opposed to object-programming-centered) point of view. In any case, SQLAlchemy has Oracle support, whereas SQLObject's Oracle support still hasn't been integrated into the main codebase. Thus, I'm using the SQLAlchemy flavor of TurboGears.
Subscribe to:
Posts (Atom)