Changeset 7
- Timestamp:
- 02/12/07 23:39:14
- Files:
-
- trunk/geniusql/__init__.py (modified) (2 diffs)
- trunk/geniusql/providers/ado.py (modified) (2 diffs)
- trunk/geniusql/providers/firebird.py (modified) (2 diffs)
- trunk/geniusql/providers/mysql.py (modified) (2 diffs)
- trunk/geniusql/providers/psycopg.py (modified) (2 diffs)
- trunk/geniusql/providers/pypgsql.py (modified) (2 diffs)
- trunk/geniusql/providers/sqlite.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/geniusql/__init__.py
r6 r7 225 225 226 226 def __copy__(self): 227 # Don't set dbwhen copying!228 newtable = self.__class__(self.name, self.qname )227 # Don't set 'created' when copying! 228 newtable = self.__class__(self.name, self.qname, self.db) 229 229 for key, c in self.iteritems(): 230 230 dict.__setitem__(newtable, key, c.copy()) … … 701 701 key=False, autoincrement=False): 702 702 """Return a Column object from the given arguments.""" 703 col = Column(pytype, dbtype, default, hints) 704 col.key = key 703 col = Column(pytype, dbtype, default, hints, key) 705 704 col.autoincrement = autoincrement 706 705 trunk/geniusql/providers/ado.py
r6 r7 406 406 # (u'TABLE_PROPID', 19), (u'DATE_CREATED', 7), (u'DATE_MODIFIED', 7)] 407 407 data, _ = self.fetch(adSchemaTables, conn=conn, schema=True) 408 return [self.tableclass(str(row[2]), self.quote(str(row[2])), self) 408 return [self.tableclass(str(row[2]), self.quote(str(row[2])), 409 self, created=True) 409 410 for row in data 410 411 # Ignore linked and system tables … … 420 421 name = str(row[2]) 421 422 if name == tablename: 422 return self.tableclass(name, self.quote(name), self) 423 return self.tableclass(name, self.quote(name), 424 self, created=True) 423 425 raise errors.MappingError(tablename) 424 426 trunk/geniusql/providers/firebird.py
r6 r7 294 294 "WHERE RDB$SYSTEM_FLAG=0 AND RDB$VIEW_BLR IS NULL;", 295 295 conn=conn) 296 return [self.tableclass(name.strip(), self.quote(name.strip()), self) 296 return [self.tableclass(name.strip(), self.quote(name.strip()), 297 self, created=True) 297 298 for name, in data] 298 299 … … 305 306 name = name.strip() 306 307 if name == tablename: 307 return self.tableclass(name, self.quote(name), self) 308 return self.tableclass(name, self.quote(name), 309 self, created=True) 308 310 raise errors.MappingError(tablename) 309 311 trunk/geniusql/providers/mysql.py
r6 r7 305 305 def _get_tables(self, conn=None): 306 306 data, _ = self.fetch("SHOW TABLES FROM %s" % self.qname, conn=conn) 307 return [self.tableclass(row[0], self.quote(row[0]), self) 307 return [self.tableclass(row[0], self.quote(row[0]), 308 self, created=True) 308 309 for row in data] 309 310 … … 314 315 name = row[0] 315 316 if name == tablename: 316 return self.tableclass(name, self.quote(name), self) 317 return self.tableclass(name, self.quote(name), 318 self, created=True) 317 319 raise errors.MappingError(tablename) 318 320 trunk/geniusql/providers/psycopg.py
r6 r7 168 168 " not in ('information_schema', 'pg_catalog')", 169 169 conn=conn) 170 return [self.tableclass(row[0], self.quote(row[0]), self) 170 return [self.tableclass(row[0], self.quote(row[0]), 171 self, created=True) 171 172 for row in data] 172 173 … … 177 178 for name, in data: 178 179 if name == tablename: 179 return self.tableclass(name, self.quote(name), self) 180 return self.tableclass(name, self.quote(name), 181 self, created=True) 180 182 raise errors.MappingError(tablename) 181 183 trunk/geniusql/providers/pypgsql.py
r6 r7 155 155 " not in ('information_schema', 'pg_catalog')", 156 156 conn=conn) 157 return [self.tableclass(row[0], self.quote(row[0]), self) 157 return [self.tableclass(row[0], self.quote(row[0]), 158 self, created=True) 158 159 for row in data] 159 160 … … 164 165 for name, in data: 165 166 if name == tablename: 166 return self.tableclass(name, self.quote(name), self) 167 return self.tableclass(name, self.quote(name), 168 self, created=True) 167 169 raise errors.MappingError(tablename) 168 170 trunk/geniusql/providers/sqlite.py
r6 r7 306 306 if not _add_column_support: 307 307 def __setitem__(self, key, column): 308 db = self.db 309 310 if db is None: 308 if not self.created: 311 309 dict.__setitem__(self, key, column) 312 310 return … … 315 313 del self[key] 316 314 315 db = self.db 317 316 if column.autoincrement: 318 317 # This may or may not be a no-op, depending on the DB. … … 345 344 346 345 def __delitem__(self, key): 347 db = self.db348 349 346 if key in self.indices: 350 347 del self.indices[key] 351 348 352 if db is None:349 if not self.created: 353 350 dict.__delitem__(self, key) 354 351 return 355 352 353 db = self.db 356 354 db.lock("Dropping property. Transactions not allowed.") 357 355 try: … … 508 506 def _get_tables(self, conn=None): 509 507 data, _ = self.fetch("SELECT name FROM sqlite_master WHERE type = 'table';") 510 # Note that we set Table.db here, since these already exist in the DB. 511 return [self.tableclass(row[0], self.quote(row[0]), self) 508 # Note that we set Table.created here, since these already exist in the DB. 509 return [self.tableclass(row[0], self.quote(row[0]), 510 self, created=True) 512 511 for row in data] 513 512 … … 515 514 data, _ = self.fetch("SELECT name FROM sqlite_master WHERE " 516 515 "name = '%s' AND type = 'table';" % tablename) 517 # Note that we set Table. dbhere, since these already exist in the DB.516 # Note that we set Table.created here, since these already exist in the DB. 518 517 for name, in data: 519 518 if name == tablename: 520 return self.tableclass(name, self.quote(name), self) 519 return self.tableclass(name, self.quote(name), 520 self, created=True) 521 521 raise errors.MappingError(tablename) 522 522 … … 646 646 del self[key] 647 647 648 # Set table. db to self, which should "turn on"648 # Set table.created to True, which should "turn on" 649 649 # any future ALTER TABLE statements. 650 table. db = self650 table.created = True 651 651 652 652 fields = []
