sqlobject-cvs Mailing List for SQLObject (Page 32)
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
(9) |
Apr
(74) |
May
(29) |
Jun
(16) |
Jul
(28) |
Aug
(10) |
Sep
(57) |
Oct
(9) |
Nov
(29) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(14) |
Mar
(6) |
Apr
(3) |
May
(12) |
Jun
(34) |
Jul
(9) |
Aug
(29) |
Sep
(22) |
Oct
(2) |
Nov
(15) |
Dec
(52) |
2005 |
Jan
(47) |
Feb
(78) |
Mar
(14) |
Apr
(35) |
May
(33) |
Jun
(16) |
Jul
(26) |
Aug
(63) |
Sep
(40) |
Oct
(96) |
Nov
(96) |
Dec
(123) |
2006 |
Jan
(159) |
Feb
(144) |
Mar
(64) |
Apr
(31) |
May
(88) |
Jun
(48) |
Jul
(16) |
Aug
(64) |
Sep
(87) |
Oct
(92) |
Nov
(56) |
Dec
(76) |
2007 |
Jan
(94) |
Feb
(103) |
Mar
(126) |
Apr
(123) |
May
(85) |
Jun
(11) |
Jul
(130) |
Aug
(47) |
Sep
(65) |
Oct
(70) |
Nov
(12) |
Dec
(11) |
2008 |
Jan
(30) |
Feb
(55) |
Mar
(88) |
Apr
(20) |
May
(50) |
Jun
|
Jul
(38) |
Aug
(1) |
Sep
(9) |
Oct
(5) |
Nov
(6) |
Dec
(39) |
2009 |
Jan
(8) |
Feb
(16) |
Mar
(3) |
Apr
(33) |
May
(44) |
Jun
(1) |
Jul
(10) |
Aug
(33) |
Sep
(74) |
Oct
(22) |
Nov
|
Dec
(15) |
2010 |
Jan
(28) |
Feb
(22) |
Mar
(46) |
Apr
(29) |
May
(1) |
Jun
(1) |
Jul
(27) |
Aug
(8) |
Sep
(5) |
Oct
(33) |
Nov
(24) |
Dec
(41) |
2011 |
Jan
(4) |
Feb
(12) |
Mar
(35) |
Apr
(29) |
May
(19) |
Jun
(16) |
Jul
(32) |
Aug
(25) |
Sep
(5) |
Oct
(11) |
Nov
(21) |
Dec
(12) |
2012 |
Jan
(3) |
Feb
(4) |
Mar
(20) |
Apr
(4) |
May
(25) |
Jun
(13) |
Jul
|
Aug
|
Sep
(2) |
Oct
(25) |
Nov
(9) |
Dec
(1) |
2013 |
Jan
(6) |
Feb
(8) |
Mar
|
Apr
(10) |
May
(31) |
Jun
(7) |
Jul
(18) |
Aug
(33) |
Sep
(4) |
Oct
(16) |
Nov
|
Dec
(27) |
2014 |
Jan
(2) |
Feb
|
Mar
|
Apr
(11) |
May
(39) |
Jun
(8) |
Jul
(11) |
Aug
(4) |
Sep
|
Oct
(27) |
Nov
|
Dec
(71) |
2015 |
Jan
(17) |
Feb
(47) |
Mar
(33) |
Apr
|
May
|
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
2016 |
Jan
(4) |
Feb
(4) |
Mar
|
Apr
|
May
(12) |
Jun
(7) |
Jul
(9) |
Aug
(31) |
Sep
(8) |
Oct
(3) |
Nov
(15) |
Dec
(1) |
2017 |
Jan
(13) |
Feb
(7) |
Mar
(14) |
Apr
(8) |
May
(10) |
Jun
(4) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(8) |
Nov
(4) |
Dec
(5) |
2018 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
(1) |
Feb
(16) |
Mar
(1) |
Apr
(3) |
May
(5) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
2021 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
|
2024 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(9) |
2025 |
Jan
|
Feb
(4) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sub...@co...> - 2012-03-31 10:08:38
|
Author: phd Date: Sat Mar 31 04:08:32 2012 New Revision: 4514 Log: Branch 1.3 Added: SQLObject/branches/1.3/ - copied from r4513, SQLObject/trunk/ |
From: <sub...@co...> - 2012-03-31 10:07:56
|
Author: phd Date: Sat Mar 31 04:07:47 2012 New Revision: 4513 Log: Going to create branch 1.3.0. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Wed Mar 21 11:19:48 2012 (r4512) +++ SQLObject/trunk/docs/News.txt Sat Mar 31 04:07:47 2012 (r4513) @@ -10,6 +10,9 @@ SQLObject (trunk) ================= +SQLObject 1.3.0 +=============== + Features & Interface -------------------- |
From: <sub...@co...> - 2012-03-21 17:19:54
|
Author: phd Date: Wed Mar 21 11:19:48 2012 New Revision: 4512 Log: Minor grammar correction. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Wed Mar 21 11:18:57 2012 (r4511) +++ SQLObject/trunk/docs/News.txt Wed Mar 21 11:19:48 2012 (r4512) @@ -18,7 +18,7 @@ * Major update in FirebirdConnection: introspection was completely rewritten and extended; ``charset`` was renamed to ``dbEncoding``; - a longstanding bug was fixed - passed port to connect(). + a longstanding bug was fixed - pass port to connect(). SQLObject 1.2.2 =============== |
From: <sub...@co...> - 2012-03-21 17:19:11
|
Author: phd Date: Wed Mar 21 11:18:57 2012 New Revision: 4511 Log: Removed a duplicate entry. Reordered some entries. Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Fri Mar 2 11:29:12 2012 (r4510) +++ SQLObject/trunk/docs/TODO.txt Wed Mar 21 11:18:57 2012 (r4511) @@ -65,6 +65,9 @@ * Protect all .encode(), catch UnicodeEncode exceptions and reraise Invalid. +* More kinds of joins, and more powerful join results (closer to how + `select` works). + * Better joins - automatic joins in .select() based on ForeignKey/MultipleJoin/RelatedJoin. @@ -74,13 +77,13 @@ * Switch from setuptools to distribute. -* py-postgresql driver: http://python.projects.postgresql.org/ - -* pg8000 driver: http://code.google.com/p/pg8000/ +* oursql MySQL bindings: https://launchpad.net/oursql * MySQL Connector/Python: https://launchpad.net/myconnpy -* oursql MySQL bindings: https://launchpad.net/oursql +* pg8000 driver: http://code.google.com/p/pg8000/ + +* py-postgresql driver: http://python.projects.postgresql.org/ * pyfirebirdsql: https://github.com/nakagami/pyfirebirdsql @@ -88,7 +91,8 @@ getattr for internal attributes only; this helps to avoid collisions with internal attributes. -* Or move column values access to a separate namespace, e.g. .c: row.c.name. +* Or move column values access to a separate namespace, e.g. .c: + row.c.column. * Convert documentation to Sphinx_ format and publish it on http://readthedocs.org/ @@ -123,11 +127,6 @@ directly and easily. (First step: get Schema-generating method into sqlmeta class) -* Automatic joins in select queries. - -* More kinds of joins, and more powerful join results (closer to how - `select` works). - * Merge SQLObject.create*, .create*SQL methods with DBPI.create* methods. * Made SQLObject unicode-based instead of just unicode-aware. All internal |
From: <sub...@co...> - 2012-03-02 18:29:22
|
Author: phd Date: Fri Mar 2 11:29:12 2012 New Revision: 4510 Log: Sorted imports. Modified: SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Modified: SQLObject/trunk/sqlobject/firebird/firebirdconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Fri Mar 2 11:27:37 2012 (r4509) +++ SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Fri Mar 2 11:29:12 2012 (r4510) @@ -1,8 +1,8 @@ -import re import os +import re import warnings -from sqlobject.dbconnection import DBAPI from sqlobject import col +from sqlobject.dbconnection import DBAPI kinterbasdb = None |
From: <sub...@co...> - 2012-03-02 18:27:43
|
Author: phd Date: Fri Mar 2 11:27:37 2012 New Revision: 4509 Log: A longstanding bug was fixed - passed port to connect(). Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Fri Mar 2 11:25:11 2012 (r4508) +++ SQLObject/trunk/docs/News.txt Fri Mar 2 11:27:37 2012 (r4509) @@ -17,7 +17,8 @@ SQLObject's hierarchy of exceptions. * Major update in FirebirdConnection: introspection was completely - rewritten and extended; ``charset`` was renamed to ``dbEncoding``. + rewritten and extended; ``charset`` was renamed to ``dbEncoding``; + a longstanding bug was fixed - passed port to connect(). SQLObject 1.2.2 =============== Modified: SQLObject/trunk/sqlobject/firebird/firebirdconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Fri Mar 2 11:25:11 2012 (r4508) +++ SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Fri Mar 2 11:27:37 2012 (r4509) @@ -84,6 +84,7 @@ extra['dialect'] = self.dialect return self.module.connect( host=self.host, + port=self.port, database=self.db, user=self.user, password=self.password, |
From: <sub...@co...> - 2012-03-02 18:25:24
|
Author: phd Date: Fri Mar 2 11:25:11 2012 New Revision: 4508 Log: Major update by Petr Jakes in FirebirdConnection: introspection was completely rewritten and extended; ``charset`` was renamed to ``dbEncoding``. Modified: SQLObject/trunk/docs/Authors.txt SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Modified: SQLObject/trunk/docs/Authors.txt ============================================================================== --- SQLObject/trunk/docs/Authors.txt Thu Mar 1 08:46:20 2012 (r4507) +++ SQLObject/trunk/docs/Authors.txt Fri Mar 2 11:25:11 2012 (r4508) @@ -25,6 +25,7 @@ * David Keeney <dkeeney at rdbhost.com> * Daniel Fetchinson <fetchinson at googlemail.com> * Neil Muller <drnlmuller+sqlobject at gmail.com> +* Petr Jakes <petr.jakes at tpc.cz> * Oleg Broytman <ph...@ph...> .. image:: http://sflogo.sourceforge.net/sflogo.php?group_id=74338&type=10 Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Thu Mar 1 08:46:20 2012 (r4507) +++ SQLObject/trunk/docs/News.txt Fri Mar 2 11:25:11 2012 (r4508) @@ -16,6 +16,9 @@ * PostgresConnection performs translation of exceptions to standard SQLObject's hierarchy of exceptions. +* Major update in FirebirdConnection: introspection was completely + rewritten and extended; ``charset`` was renamed to ``dbEncoding``. + SQLObject 1.2.2 =============== Modified: SQLObject/trunk/sqlobject/firebird/firebirdconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Thu Mar 1 08:46:20 2012 (r4507) +++ SQLObject/trunk/sqlobject/firebird/firebirdconnection.py Fri Mar 2 11:25:11 2012 (r4508) @@ -1,8 +1,11 @@ import re import os +import warnings from sqlobject.dbconnection import DBAPI from sqlobject import col +kinterbasdb = None + class FirebirdConnection(DBAPI): supportTransactions = False @@ -11,10 +14,15 @@ limit_re = re.compile('^\s*(select )(.*)', re.IGNORECASE) - def __init__(self, host, port, db, user='sysdba', + def __init__(self, host, db, port='3050', user='sysdba', password='masterkey', autoCommit=1, dialect=None, role=None, charset=None, **kw): - import kinterbasdb + global kinterbasdb + if kinterbasdb is None: + import kinterbasdb + # See http://kinterbasdb.sourceforge.net/dist_docs/usage.html + # for an explanation; in short: use datetime, decimal and unicode. + kinterbasdb.init(type_conv=200) self.module = kinterbasdb self.host = host @@ -27,8 +35,11 @@ else: self.dialect = None self.role = role - self.charset = charset - + if charset: + self.dbEncoding = charset.replace('-', '') # encoding defined by user in the connection string + else: + self.dbEncoding = charset + self.defaultDbEncoding = '' # encoding defined during database creation and stored in the database DBAPI.__init__(self, **kw) @classmethod @@ -41,7 +52,7 @@ if (path[0] == '/') and path[-3:].lower() not in ('fdb', 'gdb'): path = path[1:] path = path.replace('/', os.sep) - return cls(host, port, db=path, user=auth, password=password, **args) + return cls(host, port=port, db=path, user=auth, password=password, **args) def _runWithConnection(self, meth, *args): if not self.autoCommit: @@ -77,7 +88,7 @@ user=self.user, password=self.password, role=self.role, - charset=self.charset, + charset=self.dbEncoding, **extra ) @@ -163,64 +174,215 @@ def delColumn(self, sqlmeta, column): self.query('ALTER TABLE %s DROP %s' % (sqlmeta.table, column.dbName)) + def readDefaultEncodingFromDB(self): + if self.defaultDbEncoding is "": # get out if encoding is known allready (can by None as well)) + self.defaultDbEncoding = str(self.queryOne("SELECT rdb$character_set_name FROM rdb$database")[0].strip().lower()) # encoding defined during db creation + if self.defaultDbEncoding == "none": + self.defaultDbEncoding = None + if self.dbEncoding != self.defaultDbEncoding: + warningText = """\n + Database charset: %s is different from connection charset: %s.\n""" % (self.defaultDbEncoding, self.dbEncoding) + warnings.warn(warningText) + #TODO: ??? print out the uri string, so user can see what is going on + warningText = \ + """\n + Every CHAR or VARCHAR field can (or, better: must) have a character set defined in Firebird. + In the case, field charset is not defined, SQLObject try to use a db default encoding instead. + Firebird is unable to transliterate between character sets. + So you must set the correct values on the server and on the client if everything is to work smoothely.\n""" + warnings.warn(warningText) + + if not self.dbEncoding: # defined by user in the connection string + self.dbEncoding = self.defaultDbEncoding + warningText = """\n + encoding: %s will be used as default for this connection\n""" % self.dbEncoding + warnings.warn(warningText) + def columnsFromSchema(self, tableName, soClass): """ Look at the given table and create Col instances (or subclasses of Col) for the fields it finds in that table. """ - fieldqry = """\ - SELECT rf.RDB$FIELD_NAME as field, - t.RDB$TYPE_NAME as t, - f.RDB$FIELD_LENGTH as flength, - f.RDB$FIELD_SCALE as fscale, - rf.RDB$NULL_FLAG as nullAllowed, - coalesce(rf.RDB$DEFAULT_SOURCE, f.rdb$default_source) as thedefault, - f.RDB$FIELD_SUB_TYPE as blobtype - FROM RDB$RELATION_FIELDS rf - INNER JOIN RDB$FIELDS f ON rf.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME - INNER JOIN RDB$TYPES t ON f.RDB$FIELD_TYPE = t.RDB$TYPE - WHERE rf.RDB$RELATION_NAME = '%s' - AND t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'""" + self.readDefaultEncodingFromDB() + + fieldQuery="""\ + SELECT r.RDB$FIELD_NAME AS field_name, + CASE f.RDB$FIELD_TYPE + when 7 then 'smallint' + when 8 then 'integer' + when 16 then 'int64' + when 9 then 'quad' + when 10 then 'float' + when 11 then 'd_float' + when 17 then 'boolean' + when 27 then 'double' + when 12 then 'date' + when 13 then 'time' + when 35 then 'timestamp' + when 261 then 'blob' + when 37 then 'varchar' + when 14 then 'char' + when 40 then 'cstring' + when 45 then 'blob_id' + ELSE 'UNKNOWN' + END AS field_type, + case f.rdb$field_type + when 7 then + case f.rdb$field_sub_type + when 1 then 'numeric' + when 2 then 'decimal' + end + when 8 then + case f.rdb$field_sub_type + when 1 then 'numeric' + when 2 then 'decimal' + end + when 16 then + case f.rdb$field_sub_type + when 1 then 'numeric' + when 2 then 'decimal' + else 'bigint' + end + when 14 then + case f.rdb$field_sub_type + when 0 then 'unspecified' + when 1 then 'binary' + when 3 then 'acl' + else + case + when f.rdb$field_sub_type is null then 'unspecified' + end + end + when 37 then + case f.rdb$field_sub_type + when 0 then 'unspecified' + when 1 then 'text' + when 3 then 'acl' + else + case + when f.rdb$field_sub_type is null then 'unspecified' + end + end + when 261 then + case f.rdb$field_sub_type + when 0 then 'unspecified' + when 1 then 'text' + when 2 then 'blr' + when 3 then 'acl' + when 4 then 'reserved' + when 5 then 'encoded-meta-data' + when 6 then 'irregular-finished-multi-db-tx' + when 7 then 'transactional_description' + when 8 then 'external_file_description' + end + end as "ActualSubType", + f.RDB$FIELD_LENGTH AS field_length, + f.RDB$FIELD_PRECISION AS field_precision, + f.RDB$FIELD_SCALE AS field_scale, + cset.RDB$CHARACTER_SET_NAME AS field_charset, + coll.RDB$COLLATION_NAME AS field_collation, + r.rdb$default_source, + r.RDB$NULL_FLAG AS field_not_null_constraint, + r.RDB$DESCRIPTION AS field_description + FROM RDB$RELATION_FIELDS r + LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME + LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID + LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID + WHERE r.RDB$RELATION_NAME='%s' -- table name + ORDER BY r.RDB$FIELD_POSITION + """ - colData = self.queryAll(fieldqry % tableName.upper()) + colData = self.queryAll(fieldQuery % tableName.upper()) results = [] - for field, t, flength, fscale, nullAllowed, thedefault, blobType in colData: + for field, fieldType, fieldSubtype, fieldLength, fieldPrecision, fieldScale, fieldCharset, collationName, defaultSource, fieldNotNullConstraint, fieldDescription in colData: field = field.strip().lower() - if thedefault: - thedefault = thedefault.split(' ')[1] - if thedefault.startswith("'") and thedefault.endswith("'"): - thedefault = thedefault[1:-1] + fieldType = fieldType.strip() + if fieldCharset: + fieldCharset = str(fieldCharset.strip()) + if fieldCharset.startswith('UNICODE_FSS'): # 'UNICODE_FSS' is less strict Firebird/Interbase UTF8 definition + fieldCharset = "UTF8" + if fieldSubtype: + fieldSubtype=fieldSubtype.strip() + if fieldType == "int64": + fieldType = fieldSubtype + + if defaultSource: # can look like: "DEFAULT 0", "DEFAULT 'default text'", None + defaultSource = defaultSource.split(' ')[1] + if defaultSource.startswith ("'") and defaultSource.endswith ("'"): + defaultSource = str(defaultSource[1:-1]) + elif fieldType in ("integer", "smallint", "bigint"): + defaultSource=int(defaultSource) + elif fieldType in ("float", "double"): + defaultSource=float(defaultSource) + #TODO: other types for defaultSource + # elif fieldType == "datetime": + idName = str(soClass.sqlmeta.idName or 'id').upper() if field.upper() == idName: continue - colClass, kw = self.guessClass(t, flength, fscale) - kw['name'] = soClass.sqlmeta.style.dbColumnToPythonAttr(field).strip() - kw['dbName'] = field - kw['notNone'] = not nullAllowed - kw['default'] = thedefault + if fieldScale: + #PRECISION refers to the total number of digits, and SCALE refers to the number of digits to the right of the decimal point + #Both numbers can be from 1 to 18 (SQL dialect 1: 1-15), but SCALE mustbe less than or equal to PRECISION + if fieldScale > fieldLength: + fieldScale = fieldLength + colClass, kw = self.guessClass(fieldType, fieldLength, fieldCharset, fieldScale, ) + kw['name'] = str(soClass.sqlmeta.style.dbColumnToPythonAttr(field).strip()) + kw['dbName'] = str(field) + kw['notNone'] = not fieldNotNullConstraint + kw['default'] = defaultSource results.append(colClass(**kw)) return results - _intTypes=['INT64', 'SHORT','LONG'] - _dateTypes=['DATE','TIME','TIMESTAMP'] - - def guessClass(self, t, flength, fscale=None): + def guessClass(self, t, flength, fCharset, fscale=None): """ An internal method that tries to figure out what Col subclass is appropriate given whatever introspective information is available -- both very database-specific. """ - if t in self._intTypes: + ##TODO: check if negative values are allowed for fscale + + if t == 'smallint': # -32,768 to +32,767, 16 bits return col.IntCol, {} - elif t == 'VARYING': - return col.StringCol, {'length': flength} - elif t == 'TEXT': - return col.StringCol, {'length': flength, - 'varchar': False} - elif t in self._dateTypes: + elif t == 'integer': # -2,147,483,648 to +2,147,483,647, 32 bits + return col.IntCol, {} + elif t == 'bigint': # -2^63 to 2^63-1 or -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807, 64 bits + return col.IntCol, {} + elif t == 'float': # 32 bits, 3.4x10^-38 to 3.4x10^38, 7 digit precision (7 significant decimals) + return col.FloatCol, {} + elif t == 'double': # 64 bits, 1.7x10^-308 to 1.7x10^308, 15 digit precision (15 significant decimals) + return col.FloatCol, {} + elif t == 'numeric': # Numeric and Decimal are internally stored as smallint, integer or bigint depending on the size. They can handle up to 18 digits. + if (not flength or not fscale): # If neither PRECISION nor SCALE are specified, Firebird/InterBase defines the column as INTEGER instead of NUMERIC and stores only the integer portion of the value + return col.IntCol, {} + return col.DecimalCol, {'size': flength, 'precision': fscale} # check if negative values are allowed for fscale + + elif t == 'decimal': # Numeric and Decimal are internally stored as smallint, integer or bigint depending on the size. They can handle up to 18 digits. + return col.DecimalCol, {'size': flength, 'precision': fscale} # check if negative values are allowed for fscale + elif t == 'date': # 32 bits, 1 Jan 100. to 29 Feb 32768. + return col.DateCol, {} + elif t == 'time': # 32 bits, 00:00 to 23:59.9999 + return col.TimeCol, {} + elif t == 'timestamp': # 64 bits, 1 Jan 100 to 28 Feb 32768. return col.DateTimeCol, {} + elif t == 'char': # 32767 bytes + if fCharset and (fCharset != "NONE"): + return col.UnicodeCol, {'length': flength, 'varchar': False, 'dbEncoding': fCharset} + elif self.dbEncoding: + return col.UnicodeCol, {'length': flength, 'varchar': False, 'dbEncoding': self.dbEncoding} + else: + return col.StringCol, {'length': flength, 'varchar': False} + elif t == 'varchar': # 32767 bytes + if fCharset and (fCharset != "NONE"): + return col.UnicodeCol, {'length': flength, 'varchar': True, 'dbEncoding': fCharset} + elif self.dbEncoding: + return col.UnicodeCol, {'length': flength, 'varchar': True, 'dbEncoding': self.dbEncoding} + else: + return col.StringCol, {'length': flength, 'varchar': True} + + elif t == 'blob': # 32GB + return col.BLOBCol, {} else: return col.Col, {} |
From: <sub...@co...> - 2012-03-01 15:46:29
|
Author: phd Date: Thu Mar 1 08:46:20 2012 New Revision: 4507 Log: Stable version 1.2.2. Modified: SQLObject/tags/1.2.2/README.txt SQLObject/tags/1.2.2/setup.cfg SQLObject/tags/1.2.2/sqlobject/__version__.py Modified: SQLObject/tags/1.2.2/README.txt ============================================================================== --- SQLObject/tags/1.2.2/README.txt Thu Mar 1 08:45:12 2012 (r4506) +++ SQLObject/tags/1.2.2/README.txt Thu Mar 1 08:46:20 2012 (r4507) @@ -1,5 +1,5 @@ -SQLObject 1.2 -============= +SQLObject 1.2.2 +=============== Thanks for looking at SQLObject. SQLObject is an object-relational mapper, i.e., a library that will wrap your database tables in Python Modified: SQLObject/tags/1.2.2/setup.cfg ============================================================================== --- SQLObject/tags/1.2.2/setup.cfg Thu Mar 1 08:45:12 2012 (r4506) +++ SQLObject/tags/1.2.2/setup.cfg Thu Mar 1 08:46:20 2012 (r4507) @@ -5,10 +5,6 @@ [easy_install] #find_links = http://svn.pythonpaste.org/package_index.html -[egg_info] -tag_build = dev -tag_svn_revision = true - [pudge] theme = pythonpaste.org docs = docs/index.txt docs/Authors.txt docs/DeveloperGuide.txt docs/FAQ.txt Modified: SQLObject/tags/1.2.2/sqlobject/__version__.py ============================================================================== --- SQLObject/tags/1.2.2/sqlobject/__version__.py Thu Mar 1 08:45:12 2012 (r4506) +++ SQLObject/tags/1.2.2/sqlobject/__version__.py Thu Mar 1 08:46:20 2012 (r4507) @@ -1,8 +1,8 @@ -version = '1.2' +version = '1.2.2' major = 1 minor = 2 -micro = 0 -release_level = 'branch' +micro = 2 +release_level = 'final' serial = 0 version_info = (major, minor, micro, release_level, serial) |
From: <sub...@co...> - 2012-03-01 15:45:23
|
Author: phd Date: Thu Mar 1 08:45:12 2012 New Revision: 4506 Log: Tagging 1.2.2 Added: SQLObject/tags/1.2.2/ - copied from r4505, SQLObject/branches/1.2/ |
From: <sub...@co...> - 2012-03-01 15:40:33
|
Author: phd Date: Thu Mar 1 08:40:22 2012 New Revision: 4505 Log: Stable version 1.1.5. Modified: SQLObject/tags/1.1.5/README.txt SQLObject/tags/1.1.5/setup.cfg SQLObject/tags/1.1.5/sqlobject/__version__.py Modified: SQLObject/tags/1.1.5/README.txt ============================================================================== --- SQLObject/tags/1.1.5/README.txt Thu Mar 1 08:37:40 2012 (r4504) +++ SQLObject/tags/1.1.5/README.txt Thu Mar 1 08:40:22 2012 (r4505) @@ -1,5 +1,5 @@ -SQLObject 1.1 -============= +SQLObject 1.1.5 +=============== Thanks for looking at SQLObject. SQLObject is an object-relational mapper, i.e., a library that will wrap your database tables in Python Modified: SQLObject/tags/1.1.5/setup.cfg ============================================================================== --- SQLObject/tags/1.1.5/setup.cfg Thu Mar 1 08:37:40 2012 (r4504) +++ SQLObject/tags/1.1.5/setup.cfg Thu Mar 1 08:40:22 2012 (r4505) @@ -5,10 +5,6 @@ [easy_install] #find_links = http://svn.pythonpaste.org/package_index.html -[egg_info] -tag_build = dev -tag_svn_revision = true - [pudge] theme = pythonpaste.org docs = docs/index.txt docs/Authors.txt docs/DeveloperGuide.txt docs/FAQ.txt Modified: SQLObject/tags/1.1.5/sqlobject/__version__.py ============================================================================== --- SQLObject/tags/1.1.5/sqlobject/__version__.py Thu Mar 1 08:37:40 2012 (r4504) +++ SQLObject/tags/1.1.5/sqlobject/__version__.py Thu Mar 1 08:40:22 2012 (r4505) @@ -1,8 +1,8 @@ -version = '1.1' +version = '1.1.5' major = 1 minor = 1 -micro = 0 -release_level = 'branch' +micro = 5 +release_level = 'final' serial = 0 version_info = (major, minor, micro, release_level, serial) |
From: <sub...@co...> - 2012-03-01 15:37:47
|
Author: phd Date: Thu Mar 1 08:37:40 2012 New Revision: 4504 Log: Tagging 1.1.5 Added: SQLObject/tags/1.1.5/ - copied from r4503, SQLObject/branches/1.1/ |
From: <sub...@co...> - 2012-03-01 15:36:40
|
Author: phd Date: Thu Mar 1 08:36:27 2012 New Revision: 4503 Log: SQLObject 1.2.2 and.1.5 were released 1 Mar 2012. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Thu Mar 1 08:35:08 2012 (r4502) +++ SQLObject/trunk/docs/News.txt Thu Mar 1 08:36:27 2012 (r4503) @@ -19,6 +19,8 @@ SQLObject 1.2.2 =============== +Released 1 Mar 2012. + * A bugfix was ported from `SQLObject 1.1.5`_. SQLObject 1.2.1 @@ -61,6 +63,8 @@ SQLObject 1.1.5 =============== +Released 1 Mar 2012. + * A bug was fixed in SQLiteConnection - clear _threadPool on close(). SQLObject 1.1.4 |
From: <sub...@co...> - 2012-03-01 15:35:19
|
Author: phd Date: Thu Mar 1 08:35:08 2012 New Revision: 4502 Log: SQLObject 1.2.2 and.1.5 was released 1 Mar 2012. Modified: SQLObject/branches/1.2/docs/News.txt Modified: SQLObject/branches/1.2/docs/News.txt ============================================================================== --- SQLObject/branches/1.2/docs/News.txt Thu Mar 1 08:33:25 2012 (r4501) +++ SQLObject/branches/1.2/docs/News.txt Thu Mar 1 08:35:08 2012 (r4502) @@ -10,6 +10,8 @@ SQLObject 1.2.2 =============== +Released 1 Mar 2012. + * A bugfix was ported from `SQLObject 1.1.5`_. SQLObject 1.2.1 @@ -52,6 +54,8 @@ SQLObject 1.1.5 =============== +Released 1 Mar 2012. + * A bug was fixed in SQLiteConnection - clear _threadPool on close(). SQLObject 1.1.4 |
From: <sub...@co...> - 2012-03-01 15:33:39
|
Author: phd Date: Thu Mar 1 08:33:25 2012 New Revision: 4501 Log: SQLObject 1.1.5 was released 1 Mar 2012. Modified: SQLObject/branches/1.1/docs/News.txt Modified: SQLObject/branches/1.1/docs/News.txt ============================================================================== --- SQLObject/branches/1.1/docs/News.txt Wed Feb 1 09:11:49 2012 (r4500) +++ SQLObject/branches/1.1/docs/News.txt Thu Mar 1 08:33:25 2012 (r4501) @@ -10,6 +10,8 @@ SQLObject 1.1.5 =============== +Released 1 Mar 2012. + * A bug was fixed in SQLiteConnection - clear _threadPool on close(). SQLObject 1.1.4 |
From: <sub...@co...> - 2012-02-01 16:41:32
|
Author: phd Date: Wed Feb 1 09:09:14 2012 New Revision: 4498 Log: A bug was fixed in SQLiteConnection - clear _threadPool on close(). Modified: SQLObject/branches/1.2/docs/News.txt SQLObject/branches/1.2/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/branches/1.2/docs/News.txt ============================================================================== --- SQLObject/branches/1.2/docs/News.txt Wed Feb 1 09:06:46 2012 (r4497) +++ SQLObject/branches/1.2/docs/News.txt Wed Feb 1 09:09:14 2012 (r4498) @@ -7,6 +7,11 @@ .. _start: +SQLObject 1.2.2 +=============== + +* A bugfix was ported from `SQLObject 1.1.5`_. + SQLObject 1.2.1 =============== @@ -44,6 +49,11 @@ * sqlobject.__doc__ and main.__doc__ no longer contain version number. Use sqlobject.version or version_info. +SQLObject 1.1.5 +=============== + +* A bug was fixed in SQLiteConnection - clear _threadPool on close(). + SQLObject 1.1.4 =============== Modified: SQLObject/branches/1.2/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/branches/1.2/sqlobject/sqlite/sqliteconnection.py Wed Feb 1 09:06:46 2012 (r4497) +++ SQLObject/branches/1.2/sqlobject/sqlite/sqliteconnection.py Wed Feb 1 09:09:14 2012 (r4498) @@ -191,6 +191,10 @@ conn.text_factory = str # Convert text data to str, not unicode return conn + def close(self): + DBAPI.close(self) + self._threadPool = {} + def _executeRetry(self, conn, cursor, query): if self.debug: self.printDebug(conn, query, 'QueryR') |
From: <sub...@co...> - 2012-02-01 16:41:21
|
Author: phd Date: Wed Feb 1 09:11:49 2012 New Revision: 4500 Log: A bug was fixed in SQLiteConnection - clear _threadPool on close(). Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Wed Feb 1 09:11:20 2012 (r4499) +++ SQLObject/trunk/docs/News.txt Wed Feb 1 09:11:49 2012 (r4500) @@ -16,6 +16,11 @@ * PostgresConnection performs translation of exceptions to standard SQLObject's hierarchy of exceptions. +SQLObject 1.2.2 +=============== + +* A bugfix was ported from `SQLObject 1.1.5`_. + SQLObject 1.2.1 =============== @@ -53,6 +58,11 @@ * sqlobject.__doc__ and main.__doc__ no longer contain version number. Use sqlobject.version or version_info. +SQLObject 1.1.5 +=============== + +* A bug was fixed in SQLiteConnection - clear _threadPool on close(). + SQLObject 1.1.4 =============== Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Wed Feb 1 09:11:20 2012 (r4499) +++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Wed Feb 1 09:11:49 2012 (r4500) @@ -191,6 +191,10 @@ conn.text_factory = str # Convert text data to str, not unicode return conn + def close(self): + DBAPI.close(self) + self._threadPool = {} + def _executeRetry(self, conn, cursor, query): if self.debug: self.printDebug(conn, query, 'QueryR') |
From: <sub...@co...> - 2012-02-01 16:41:10
|
Author: phd Date: Wed Feb 1 09:11:20 2012 New Revision: 4499 Log: pg8000 driver. Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Wed Feb 1 09:09:14 2012 (r4498) +++ SQLObject/trunk/docs/TODO.txt Wed Feb 1 09:11:20 2012 (r4499) @@ -76,6 +76,8 @@ * py-postgresql driver: http://python.projects.postgresql.org/ +* pg8000 driver: http://code.google.com/p/pg8000/ + * MySQL Connector/Python: https://launchpad.net/myconnpy * oursql MySQL bindings: https://launchpad.net/oursql |
From: <sub...@co...> - 2012-02-01 16:41:01
|
Author: phd Date: Wed Feb 1 09:06:46 2012 New Revision: 4497 Log: A bug was fixed in SQLiteConnection - clear _threadPool on close(). Modified: SQLObject/branches/1.1/docs/News.txt SQLObject/branches/1.1/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/branches/1.1/docs/News.txt ============================================================================== --- SQLObject/branches/1.1/docs/News.txt Wed Dec 14 10:44:09 2011 (r4496) +++ SQLObject/branches/1.1/docs/News.txt Wed Feb 1 09:06:46 2012 (r4497) @@ -7,6 +7,11 @@ .. _start: +SQLObject 1.1.5 +=============== + +* A bug was fixed in SQLiteConnection - clear _threadPool on close(). + SQLObject 1.1.4 =============== Modified: SQLObject/branches/1.1/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/branches/1.1/sqlobject/sqlite/sqliteconnection.py Wed Dec 14 10:44:09 2011 (r4496) +++ SQLObject/branches/1.1/sqlobject/sqlite/sqliteconnection.py Wed Feb 1 09:06:46 2012 (r4497) @@ -191,6 +191,10 @@ conn.text_factory = str # Convert text data to str, not unicode return conn + def close(self): + DBAPI.close(self) + self._threadPool = {} + def _executeRetry(self, conn, cursor, query): if self.debug: self.printDebug(conn, query, 'QueryR') |
From: SourceForge.net <no...@so...> - 2012-01-10 17:35:44
|
Bugs item #3471315, was opened at 2012-01-09 04:49 Message generated for change (Comment added) made by hthompson You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Postgres Group: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Henry S Thompson (hthompson) Assigned to: Oleg Broytman (phd) Summary: Can't use VIEWs with postgres Initial Comment: SQLObject v.1.2.1, Python 2.6, Windows 7 x64, Postgresql 9.1 The code in pgconnection.py for finding primary keys won't ever find anything for a VIEW. Not sure what the correct fix is (I don't understand postgres internals v. well), but the attached patch works for me. . . ---------------------------------------------------------------------- >Comment By: Henry S Thompson (hthompson) Date: 2012-01-10 09:35 Message: Sorry not to be clearer -- what you've written is the existing code, which doesn't work for VIEWs. I don't understand how postgres lays out and uses its internal tables, so I can't offer any suggestions about how to modify that SELECT so that it works for VIEWs, sorry. The proximate problem with that code is that although there is an entry in pg_class for a view, so there is an oid for it, that oid does _not_ appear in pg_index in the indrelid column (or in any other column). I'm afraid I don't know where to look next. . . ---------------------------------------------------------------------- Comment By: Oleg Broytman (phd) Date: 2012-01-10 09:11 Message: Instead of blindly copying idName wouldn't it be better to find out why PostgresConnection doesn't recognize pkeys on views? Try the following query replacing 'test' with the name of a VIEW: SELECT pg_index.indisprimary, pg_catalog.pg_get_indexdef(pg_index.indexrelid) FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index AS pg_index WHERE c.relname = 'test' AND c.oid = pg_index.indrelid AND pg_index.indexrelid = c2.oid AND pg_index.indisprimary It have to return something like indisprimary | pg_get_indexdef --------------+----------------------------------------------------------- t | CREATE UNIQUE INDEX test_pkey ON test USING btree (my_id) (1 row) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 |
From: SourceForge.net <no...@so...> - 2012-01-10 17:11:39
|
Bugs item #3471315, was opened at 2012-01-09 04:49 Message generated for change (Comment added) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Postgres Group: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Henry S Thompson (hthompson) >Assigned to: Oleg Broytman (phd) Summary: Can't use VIEWs with postgres Initial Comment: SQLObject v.1.2.1, Python 2.6, Windows 7 x64, Postgresql 9.1 The code in pgconnection.py for finding primary keys won't ever find anything for a VIEW. Not sure what the correct fix is (I don't understand postgres internals v. well), but the attached patch works for me. . . ---------------------------------------------------------------------- >Comment By: Oleg Broytman (phd) Date: 2012-01-10 09:11 Message: Instead of blindly copying idName wouldn't it be better to find out why PostgresConnection doesn't recognize pkeys on views? Try the following query replacing 'test' with the name of a VIEW: SELECT pg_index.indisprimary, pg_catalog.pg_get_indexdef(pg_index.indexrelid) FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index AS pg_index WHERE c.relname = 'test' AND c.oid = pg_index.indrelid AND pg_index.indexrelid = c2.oid AND pg_index.indisprimary It have to return something like indisprimary | pg_get_indexdef --------------+----------------------------------------------------------- t | CREATE UNIQUE INDEX test_pkey ON test USING btree (my_id) (1 row) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 |
From: SourceForge.net <no...@so...> - 2012-01-09 12:49:54
|
Bugs item #3471315, was opened at 2012-01-09 04:49 Message generated for change (Tracker Item Submitted) made by hthompson You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Postgres Group: SQLObject release (specify) Status: Open Resolution: None Priority: 5 Private: No Submitted By: Henry S Thompson (hthompson) Assigned to: Nobody/Anonymous (nobody) Summary: Can't use VIEWs with postgres Initial Comment: SQLObject v.1.2.1, Python 2.6, Windows 7 x64, Postgresql 9.1 The code in pgconnection.py for finding primary keys won't ever find anything for a VIEW. Not sure what the correct fix is (I don't understand postgres internals v. well), but the attached patch works for me. . . ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=3471315&group_id=74338 |
From: <sub...@co...> - 2011-12-14 17:44:17
|
Author: phd Date: Wed Dec 14 10:44:09 2011 New Revision: 4496 Log: No need to increase self._connectionCount - DBAPI.getConnection will do it. Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 10:32:43 2011 (r4495) +++ SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 10:44:09 2011 (r4496) @@ -143,7 +143,6 @@ # For printDebug in _executeRetry self._connectionNumbers[id(conn)] = self._connectionCount - self._connectionCount += 1 if self.autoCommit: self._setAutoCommit(conn, 1) c = conn.cursor() |
From: <sub...@co...> - 2011-12-14 17:32:50
|
Author: phd Date: Wed Dec 14 10:32:43 2011 New Revision: 4495 Log: Set self._connectionNumbers for printDebug in _executeRetry. Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 10:12:28 2011 (r4494) +++ SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 10:32:43 2011 (r4495) @@ -140,6 +140,11 @@ conn = self.module.connect(**self.dsn_dict) except self.module.OperationalError, e: raise OperationalError("%s; used connection string %r" % (e, self.dsn)) + + # For printDebug in _executeRetry + self._connectionNumbers[id(conn)] = self._connectionCount + self._connectionCount += 1 + if self.autoCommit: self._setAutoCommit(conn, 1) c = conn.cursor() if self.schema: |
From: <sub...@co...> - 2011-12-14 17:12:35
|
Author: phd Date: Wed Dec 14 10:12:28 2011 New Revision: 4494 Log: Translate OperationalError in makeConnection. Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py Modified: SQLObject/trunk/sqlobject/postgres/pgconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 09:38:42 2011 (r4493) +++ SQLObject/trunk/sqlobject/postgres/pgconnection.py Wed Dec 14 10:12:28 2011 (r4494) @@ -139,7 +139,7 @@ else: conn = self.module.connect(**self.dsn_dict) except self.module.OperationalError, e: - raise self.module.OperationalError("%s; used connection string %r" % (e, self.dsn)) + raise OperationalError("%s; used connection string %r" % (e, self.dsn)) if self.autoCommit: self._setAutoCommit(conn, 1) c = conn.cursor() if self.schema: |
From: SourceForge.net <no...@so...> - 2011-12-14 16:38:08
|
Bugs item #2870763, was opened at 2009-09-30 07:08 Message generated for change (Settings changed) made by phd You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2870763&group_id=74338 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Postgres Group: None >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) >Assigned to: Oleg Broytman (phd) Summary: SQLObject doesn't handle psycopg2.IntegrityError Initial Comment: SQLObject throws psycopg2.IntegrityError (duplicate key value violates unique constraint "account_username_key") when in fact it should throw sqlobject.dberrors.IntegrityError. try: person = Account(username="rafael", password="senha", connection=conn) person.addContact(Contact(email="ro...@ma...", connection=conn)) person.addContact(Contact(email="ma...@ma...", connection=conn)) except sqlobject.dberrors.IntegrityError, e: pass ---------------------------------------------------------------------- >Comment By: Oleg Broytman (phd) Date: 2011-12-14 08:38 Message: Implemented in commit 4492. ---------------------------------------------------------------------- Comment By: Oleg Broytman (phd) Date: 2009-10-12 08:39 Message: Only SQLiteConnection and MySQLConnection currently map DB API exceptions to sqlobject.dberrors. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=540672&aid=2870763&group_id=74338 |