]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
export UPPERCASE types as "from sqlalchemy.dialects.<dbname> import VARCHAR, TEXT...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 Oct 2009 19:28:18 +0000 (19:28 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 10 Oct 2009 19:28:18 +0000 (19:28 +0000)
doc/build/reference/sqlalchemy/types.rst
lib/sqlalchemy/dialects/firebird/__init__.py
lib/sqlalchemy/dialects/mssql/__init__.py
lib/sqlalchemy/dialects/mysql/__init__.py
lib/sqlalchemy/dialects/oracle/__init__.py
lib/sqlalchemy/dialects/postgresql/__init__.py
lib/sqlalchemy/dialects/postgresql/base.py
lib/sqlalchemy/dialects/sqlite/__init__.py

index 06bda1787c6d7af6a11627fa2ca04b1df4f4bf37..bddc2e58829bc629f1a44363ab26edb1929d74a7 100644 (file)
@@ -153,7 +153,7 @@ reference for the database you're interested in.
 For example, MySQL has a ``BIGINTEGER`` type and PostgreSQL has an
 ``INET`` type.  To use these, import them from the module explicitly::
 
-    from sqlalchemy.dialect.mysql import dialect as mysql
+    from sqlalchemy.dialects import mysql
 
     table = Table('foo', meta,
         Column('id', mysql.BIGINTEGER),
@@ -162,27 +162,42 @@ For example, MySQL has a ``BIGINTEGER`` type and PostgreSQL has an
 
 Or some PostgreSQL types::
 
-    from sqlalchemy.dialect.postgresql import dialect as postgresql
+    from sqlalchemy.dialects import postgresql
 
     table = Table('foo', meta,
         Column('ipaddress', postgresql.INET),
         Column('elements', postgresql.ARRAY(str))
         )
 
-Each dialect should provide the full set of typenames supported by
-that backend, so that a backend-specific schema can be created without
-the need to locate types::
+Each dialect provides the full set of typenames supported by
+that backend within its `__all__` collection, so that a simple
+`import *` or similar will import all supported types as 
+implemented for that backend::
 
-    from sqlalchemy.dialects.postgresql import dialect as pg
+    from sqlalchemy.dialects.postgresql import *
 
     t = Table('mytable', metadata,
-               Column('id', pg.INTEGER, primary_key=True),
-               Column('name', pg.VARCHAR(300)),
-               Column('inetaddr', pg.INET)
+               Column('id', INTEGER, primary_key=True),
+               Column('name', VARCHAR(300)),
+               Column('inetaddr', INET)
     )
 
 Where above, the INTEGER and VARCHAR types are ultimately from 
-sqlalchemy.types, but the Postgresql dialect makes them available.
+sqlalchemy.types, and INET is specific to the Postgresql dialect.
+
+Some dialect level types have the same name as the SQL standard type,
+but also provide additional arguments.  For example, MySQL implements
+the full range of character and string types including additional arguments
+such as `collation` and `charset`::
+
+    from sqlalchemy.dialects.mysql import VARCHAR, TEXT
+
+    table = Table('foo', meta,
+        Column('col1', VARCHAR(200, collation='binary')),
+        Column('col2', TEXT(charset='latin1'))
+    )
+    
+
 
 Custom Types
 ------------
index 6b1b80db21ac11117a1c7f015eb4f0cd9bdd43c2..c108388da48c8aca40112225c05853371cf88745 100644 (file)
@@ -1,3 +1,14 @@
 from sqlalchemy.dialects.firebird import base, kinterbasdb
 
-base.dialect = kinterbasdb.dialect
\ No newline at end of file
+base.dialect = kinterbasdb.dialect
+
+from sqlalchemy.dialects.firebird.base import \
+    SMALLINT, BIGINT, FLOAT, FLOAT, DATE, TIME, \
+    TEXT, NUMERIC, FLOAT, TIMESTAMP, VARCHAR, CHAR, BLOB
+    
+__all__ = (
+    'SMALLINT', 'BIGINT', 'FLOAT', 'FLOAT', 'DATE', 'TIME', 
+    'TEXT', 'NUMERIC', 'FLOAT', 'TIMESTAMP', 'VARCHAR', 'CHAR', 'BLOB'
+)
+    
+    
index 292320568d97c9d6fa7f238ac41402ed31e4da68..c723249cb2211ce5f3bd109a430e4f4ae1729b0f 100644 (file)
@@ -1,3 +1,19 @@
 from sqlalchemy.dialects.mssql import base, pyodbc, adodbapi, pymssql, zxjdbc
 
 base.dialect = pyodbc.dialect
+
+from sqlalchemy.dialects.mssql.base import \
+    INTEGER, BIGINT, SMALLINT, TINYINT, VARCHAR, NVARCHAR, CHAR, \
+    NCHAR, TEXT, NTEXT, DECIMAL, NUMERIC, FLOAT, DATETIME,\
+    DATETIME2, DATETIMEOFFSET, DATE, TIME, SMALLDATETIME, \
+    BINARY, VARBINARY, BIT, REAL, IMAGE, TIMESTAMP,\
+    MONEY, SMALLMONEY, UNIQUEIDENTIFIER, SQL_VARIANT
+
+
+__all__ = (
+    'INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'VARCHAR', 'NVARCHAR', 'CHAR', 
+    'NCHAR', 'TEXT', 'NTEXT', 'DECIMAL', 'NUMERIC', 'FLOAT', 'DATETIME',
+    'DATETIME2', 'DATETIMEOFFSET', 'DATE', 'TIME', 'SMALLDATETIME', 
+    'BINARY', 'VARBINARY', 'BIT', 'REAL', 'IMAGE', 'TIMESTAMP',
+    'MONEY', 'SMALLMONEY', 'UNIQUEIDENTIFIER', 'SQL_VARIANT'
+)
\ No newline at end of file
index 4106a299bef390458b87761ef71c9f711805a832..fbd238b1a633735cfaa0749f5d15c96aff6c838b 100644 (file)
@@ -1,4 +1,17 @@
 from sqlalchemy.dialects.mysql import base, mysqldb, pyodbc, zxjdbc
 
 # default dialect
-base.dialect = mysqldb.dialect
\ No newline at end of file
+base.dialect = mysqldb.dialect
+
+from sqlalchemy.dialects.mysql.base import \
+    BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE, DATETIME, DECIMAL, DOUBLE, ENUM, \
+    DECIMAL, FLOAT, INTEGER, INTEGER, LONGBLOB, LONGTEXT, MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, NCHAR, \
+    NVARCHAR, NUMERIC, SET, SMALLINT, TEXT, TIME, TIMESTAMP, TINYBLOB, \
+    TINYINT, TINYTEXT, VARBINARY, VARCHAR, YEAR
+    
+__all__ = (
+'BIGINT',  'BINARY',  'BIT',  'BLOB',  'BOOLEAN',  'CHAR',  'DATE',  'DATETIME',  'DECIMAL',  'DOUBLE',  'ENUM',  
+'DECIMAL',  'FLOAT',  'INTEGER',  'INTEGER',  'LONGBLOB',  'LONGTEXT',  'MEDIUMBLOB',  'MEDIUMINT',  'MEDIUMTEXT',  'NCHAR',  
+'NVARCHAR',  'NUMERIC',  'SET',  'SMALLINT',  'TEXT',  'TIME',  'TIMESTAMP',  'TINYBLOB',  
+'TINYINT',  'TINYTEXT',  'VARBINARY',  'VARCHAR',  'YEAR'
+)
index 3b4379ab704ebd811fc65f911feb032c0eb07ba7..a3bba145275b72de33b08307aa4367d32f43b43c 100644 (file)
@@ -1,3 +1,15 @@
 from sqlalchemy.dialects.oracle import base, cx_oracle, zxjdbc
 
 base.dialect = cx_oracle.dialect
+
+from sqlalchemy.dialects.oracle.base import \
+    VARCHAR, NVARCHAR, CHAR, DATE, DATETIME, NUMBER,\
+    BLOB, BFILE, CLOB, NCLOB, TIMESTAMP, RAW,\
+    FLOAT, DOUBLE_PRECISION, LONG
+
+
+__all__ = (
+'VARCHAR', 'NVARCHAR', 'CHAR', 'DATE', 'DATETIME', 'NUMBER',
+'BLOB', 'BFILE', 'CLOB', 'NCLOB', 'TIMESTAMP', 'RAW',
+'FLOAT', 'DOUBLE_PRECISION', 'LONG'
+)
index af9430a2b0dd45a473934e8b062e808ffbafab38..045fba253792020dba44949a9a96c11699f471b7 100644 (file)
@@ -1,3 +1,14 @@
 from sqlalchemy.dialects.postgresql import base, psycopg2, pg8000, zxjdbc
 
-base.dialect = psycopg2.dialect
\ No newline at end of file
+base.dialect = psycopg2.dialect
+
+from sqlalchemy.dialects.postgresql.base import \
+    INTEGER, BIGINT, SMALLINT, VARCHAR, CHAR, TEXT, NUMERIC, FLOAT, REAL, INET, \
+    CIDR, UUID, BIT, MACADDR, DOUBLE_PRECISION, TIMESTAMP, TIME,\
+    DATE, BYTEA, BOOLEAN, INTERVAL
+
+__all__ = (
+'INTEGER', 'BIGINT', 'SMALLINT', 'VARCHAR', 'CHAR', 'TEXT', 'NUMERIC', 'FLOAT', 'REAL', 'INET', 
+'CIDR', 'UUID', 'BIT', 'MACADDR', 'DOUBLE_PRECISION', 'TIMESTAMP', 'TIME',
+'DATE', 'BYTEA', 'BOOLEAN', 'INTERVAL'
+)
\ No newline at end of file
index 78ea1a8fc3fe784c56a7716f9a1958d8e0d43ce7..19d9224e29736557211694103c6f420b3396b2d0 100644 (file)
@@ -43,12 +43,12 @@ The dialect supports PG 8.3's ``INSERT..RETURNING`` and ``UPDATE..RETURNING`` sy
 but must be explicitly enabled on a per-statement basis::
 
     # INSERT..RETURNING
-    result = table.insert(postgresql_returning=[table.c.col1, table.c.col2]).\\
+    result = table.insert().returning(table.c.col1, table.c.col2).\\
         values(name='foo')
     print result.fetchall()
     
     # UPDATE..RETURNING
-    result = table.update(postgresql_returning=[table.c.col1, table.c.col2]).\\
+    result = table.update().returning(table.c.col1, table.c.col2).\\
         where(table.c.name=='foo').values(name='bar')
     print result.fetchall()
 
index 3cc08870f21fe7986679d9067eb35452fee6183a..a3fd74f69965aed7d991573db76e2d51ac587069 100644 (file)
@@ -1,4 +1,14 @@
 from sqlalchemy.dialects.sqlite import base, pysqlite
 
 # default dialect
-base.dialect = pysqlite.dialect
\ No newline at end of file
+base.dialect = pysqlite.dialect
+
+
+from sqlalchemy.dialects.sqlite.base import \
+    BLOB, BOOLEAN, CHAR, DATE, DATETIME, DECIMAL, FLOAT, INTEGER,\
+    NUMERIC, SMALLINT, TEXT, TIME, TIMESTAMP, VARCHAR
+
+__all__ = (
+    'BLOB', 'BOOLEAN', 'CHAR', 'DATE', 'DATETIME', 'DECIMAL', 'FLOAT', 'INTEGER',
+    'NUMERIC', 'SMALLINT', 'TEXT', 'TIME', 'TIMESTAMP', 'VARCHAR',
+)
\ No newline at end of file