1
2
3 """
4 Gadfly extended database driver.
5 """
6
7 __docformat__ = "restructuredtext en"
8
9
10
11
12
13 import os
14 import sys
15
16 from grizzled.db.base import (Cursor, DB, DBDriver, Error, Warning,
17 TableMetadata, IndexMetadata, RDBMSMetadata)
28 - def __init__(self, real_cursor, driver):
29 self.real_cursor = real_cursor
30 self.driver = driver
31
32 @property
34 total = len(self.real_cursor.fetchall())
35 self.real_cursor.reset_results()
36 return total
37
38 @property
41
43 try:
44 self.real_cursor.close()
45 except:
46 raise Error(sys.exc_info()[1])
47
48 - def execute(self, statement, parameters=None):
49 try:
50 if parameters:
51 result = self.real_cursor.execute(statement, parameters)
52 else:
53 result = self.real_cursor.execute(statement)
54 return result
55 except:
56 raise Error(sys.exc_info()[1])
57
59 try:
60 return self.real_cursor.executemany(statement, *parameters)
61 except:
62 raise Error(sys.exc_info()[1])
63
65 try:
66 return self.real_cursor.fetchall()
67 except:
68 raise Error(sys.exc_info()[1])
69
71 try:
72 return self.real_cursor.fetchone()
73 except:
74 s = sys.exc_info()[1]
75 if (type(s) == str) and (s.startswith('no more')):
76 return None
77 raise Error(s)
78
80 try:
81 return self.real_cursor.fetchmany(n)
82 except:
83 s = sys.exc_info()[1]
84 if (type(s) == str) and (s.startswith('no more')):
85 return None
86 raise Error(s)
87
90 DB.__init__(self, db, driver)
91 self.__db = db
92 self.__driver = driver
93
97
99 """DB Driver for Gadfly, a pure Python RDBMS"""
100
104
106 import gadfly
107 return gadfly
108
111
112 - def connect(self,
113 host=None,
114 port=None,
115 user='',
116 password='',
117 database='default'):
118 gadfly = self.get_import()
119 directory = os.path.dirname(database)
120 database = os.path.basename(database)
121 if database.endswith('.gfd'):
122 database = database[:-4]
123
124 try:
125 g = gadfly.gadfly()
126 g.startup(database, directory)
127 return GadflyDB(g, self)
128 except IOError:
129 raise Error(sys.exc_info()[1])
130
132 cursor.execute('SELECT table_name FROM __table_names__ '
133 'WHERE is_view = 0')
134 table_names = []
135 for row in cursor.fetchall():
136 table_names += [row[0]]
137
138 return table_names
139
144
155
181
185