Saturday, 27 January 2007

IronPython

Right, my first blog post (ever). How exciting.

Anyway, I've recently started dabbling with IronPython, and despite not being the biggest Python fan in the world, the combination of .NET, and a dynamic language like Python was too hard to resist.

Here are my database utility functions (dbutil.py): (Work in Progress)


import clr
clr.AddReferenceByPartialName("System.Data")
clr.AddReferenceByPartialName("System.Configuration")

from System.Data import *
from System.Data.SqlClient import *
from System.Configuration.ConfigurationSettings import GetConfig

try:
default_connection_string =
GetConfig("connectionStrings").ConnectionStrings["defaultConnectionString"].
ConnectionString
except:
pass

def isdbnull(v):
return isinstance(v, System.DBNull)

def get_dt(query):
conn=SqlConnection(default_connection_string)
try:
conn.Open()

sa = SqlDataAdapter(query, conn)
dt = DataTable()
try:
sa.Fill(dt)
return dt
finally:
dt.Dispose()
finally:
conn.Dispose()

def get_dr(query):
dt=get_dt(query)
if dt.Rows.Count > 0:
return dt.Rows[0]

def get_col(query):
dt=get_dt(query)
try:
return [x[0] for x in dt.Rows]
finally:
dt.Dispose()

def get_scalar(query):
conn=SqlConnection(default_connection_string)
try:
conn.Open()
comm=SqlCommand(query, conn)
return comm.ExecuteScalar()
finally:
conn.Dispose()