72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
# -*- Mode: python -*-
|
|
#
|
|
# Copyright (C) 2000-2001 The ViewCVS Group. All Rights Reserved.
|
|
#
|
|
# By using this file, you agree to the terms and conditions set forth in
|
|
# the LICENSE.html file which can be found at the top level of the ViewCVS
|
|
# distribution or at http://viewcvs.sourceforge.net/license-1.html.
|
|
#
|
|
# Contact information:
|
|
# Greg Stein, PO Box 760, Palo Alto, CA, 94302
|
|
# gstein@lyra.org, http://viewcvs.sourceforge.net/
|
|
#
|
|
# -----------------------------------------------------------------------
|
|
#
|
|
|
|
import sys
|
|
import MySQLdb
|
|
|
|
|
|
dbi_error = "dbi error"
|
|
|
|
|
|
## make some checks in MySQLdb
|
|
_no_datetime = """\
|
|
ERROR: Your version of MySQLdb requires the mxDateTime module
|
|
for the Timestamp() and TimestampFromTicks() methods.
|
|
You will need to install mxDateTime to use the ViewCVS
|
|
database.
|
|
"""
|
|
|
|
if not hasattr(MySQLdb, "Timestamp") or \
|
|
not hasattr(MySQLdb, "TimestampFromTicks"):
|
|
sys.stderr.write(_no_datetime)
|
|
sys.exit(1)
|
|
|
|
|
|
class Cursor:
|
|
def __init__(self, mysql_cursor):
|
|
self.__cursor = mysql_cursor
|
|
|
|
def execute(self, *args):
|
|
apply(self.__cursor.execute, args)
|
|
|
|
def fetchone(self):
|
|
try:
|
|
row = self.__cursor.fetchone()
|
|
except IndexError:
|
|
row = None
|
|
|
|
return row
|
|
|
|
|
|
class Connection:
|
|
def __init__(self, host, user, passwd, db):
|
|
self.__mysql = MySQLdb.connect(
|
|
host=host, user=user, passwd=passwd, db=db)
|
|
|
|
def cursor(self):
|
|
return Cursor(self.__mysql.cursor())
|
|
|
|
|
|
def Timestamp(year, month, date, hour, minute, second):
|
|
return MySQLdb.Timestamp(year, month, date, hour, minute, second)
|
|
|
|
|
|
def TimestampFromTicks(ticks):
|
|
return MySQLdb.TimestampFromTicks(ticks)
|
|
|
|
|
|
def connect(host, user, passwd, db):
|
|
return Connection(host, user, passwd, db)
|