########################################################################
# Vers 2.10 16 July 2008, (c)2004-2008 John Lim (jlim#natsoft.com) All Rights Reserved
# Released under a BSD-style license. See LICENSE.txt.
# Download: http://adodb.sourceforge.net/#pydownload
########################################################################
import adodb,re
import MySQLdb
#Thread Safety= 1 module
#Param Style = format
try:
True, False
except NameError:
# Maintain compatibility with Python 2.2
True, False = 1, 0
class adodb_mysql(adodb.ADOConnection):
databaseType = 'mysql'
dataProvider = 'mysql'
metaColSQL = "SHOW COLUMNS FROM %s"
sysDate = 'CURDATE()'
sysTimeStamp = 'NOW()'
def __init__(self):
pass
def Module(self):
return MySQLdb
def _connect(self,host=None,user=None,password=None,database=None):
self._conn = MySQLdb.connect(host, user, password, database)
def _newcursor(self,rs):
return cursor_mysql(rs,self)
def BeginTrans(self):
if self._autocommit:
self._autocommit = False
self.Execute('set autocommit=0')
#self._conn.Execute('begin')
def RollbackTrans(self):
self.Execute('rollback')
self.Execute('set autocommit=1')
self._autocommit = True
def SelectLimit(self,sql,limit,offset=-1,params=None):
if (offset >= 0): offset = str(offset)+","
else: offset = ""
return self.Execute(sql+" LIMIT "+offset+str(limit),params)
def CommitTrans(self):
self.Execute('commit')
self.Execute('set autocommit=1')
self._autocommit = True
def UpdateBlob(self,table,field,blob,where,blobtype='BLOB'):
self.Execute("update %s set %s='%s' WHERE %s" % (table,field,self.addq(blob),where))
def qstr(self,s):
return "'%s'" % self._conn.escape_string(s)
def MetaColumns(self, table):
sql = self.metaColSQL % table
rs = self.Execute(sql)
arr = []
reFloat = re.compile("^(.+)\\((\\d+),(\\d+)")
reInt = re.compile("^(.+)\\((\\d+)")
while not rs.EOF:
typeF = rs.fields[1]
if typeF.find('(')>=0:
if typeF.find(',')>=0:
m = reFloat.search(typeF)
else:
m = reInt.search(typeF)
if m:
gps = m.groups()
type = gps[0]
size = gps[1]
else:
type = typeF
size = -1
else:
type = typeF
size = -1
arr.append((rs.fields[0],type,size))
rs.MoveNext()
return arr
class cursor_mysql(adodb.ADOCursor):
def __init__(self,rs,conn):
adodb.ADOCursor.__init__(self,rs,conn)
#self._insertid = rs.insert_id()
self._insertid = rs.lastrowid
if __name__ == '__main__':
db = adodb.NewADOConnection('mysql')
db.Connect('localhost','root','','northwind')
for r in db.Execute('select * from adoxyz'):
print r
adodb.Test(db)
|