This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "SQLObject development repository".
The branch, master has been updated
via 1c6f0a43ea6d29d84979687f4f0b6d1d1ab30c9c (commit)
via ab58e61a1b11e97a85cff7503b5936704b856175 (commit)
via f40463a8193c8479c19649c320763f340397a73e (commit)
via b313c1fb5d6c1fb1535dbc297f0dc71a2c8485d3 (commit)
via afe2ca4d6f07aaacd7aca8c238eff155ac5dbebb (commit)
via 3d86b18aff0e935e34c2489d3737ca35ae23ab00 (commit)
via f362e07698a017da0d7b63f685f5eddf123a676b (commit)
via 970d6e68dc1441dbbdd52de0c0e74081a2297542 (commit)
via 4e781b567ce07b65a9f559b529c2d61cc00f3713 (commit)
via a2b4c6ac06dbe68d188520d5b67bdabe978011d9 (commit)
from ac4a243bc2e029e29991b99a33d5fb5cb386b901 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceforge.net/p/sqlobject/sqlobject/ci/1c6f0a43ea6d29d84979687f4f0b6d1d1ab30c9c
commit 1c6f0a43ea6d29d84979687f4f0b6d1d1ab30c9c
Author: Oleg Broytman <ph...@ph...>
Date: Wed Jan 18 02:48:32 2017 +0300
Fix MSSQLConnection.server_version() under Py3
diff --git a/docs/News.rst b/docs/News.rst
index caf4dfe..4f2f853 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -68,6 +68,8 @@ Bug fix
* Fix concatenation operator for MSSQL/Sybase (it's ``+``, not ``||``).
+* Fix MSSQLConnection.server_version() under Py3 (decode version to str).
+
Documentation
-------------
diff --git a/sqlobject/mssql/mssqlconnection.py b/sqlobject/mssql/mssqlconnection.py
index 792298f..1350514 100644
--- a/sqlobject/mssql/mssqlconnection.py
+++ b/sqlobject/mssql/mssqlconnection.py
@@ -1,6 +1,7 @@
-from sqlobject.dbconnection import DBAPI
-from sqlobject import col
import re
+from sqlobject import col
+from sqlobject.dbconnection import DBAPI
+from sqlobject.compat import PY2
class MSSQLConnection(DBAPI):
@@ -347,6 +348,8 @@ class MSSQLConnection(DBAPI):
try:
server_version = self.queryOne(
"SELECT SERVERPROPERTY('productversion')")[0]
+ if not PY2 and isinstance(server_version, bytes):
+ server_version = server_version.decode('ascii')
server_version = server_version.split('.')[0]
server_version = int(server_version)
except:
http://sourceforge.net/p/sqlobject/sqlobject/ci/ab58e61a1b11e97a85cff7503b5936704b856175
commit ab58e61a1b11e97a85cff7503b5936704b856175
Author: Oleg Broytman <ph...@ph...>
Date: Wed Jan 18 01:54:28 2017 +0300
Fix N-quoted values: under Py2 they must be bytes
diff --git a/sqlobject/col.py b/sqlobject/col.py
index a7741c9..26c9a51 100644
--- a/sqlobject/col.py
+++ b/sqlobject/col.py
@@ -623,7 +623,6 @@ class StringCol(Col):
class NQuoted(sqlbuilder.SQLExpression):
def __init__(self, value):
- assert isinstance(value, unicode_type)
self.value = value
def __hash__(self):
@@ -664,6 +663,8 @@ class UnicodeStringValidator(SOValidator):
pass
else:
if connection.dbName == 'mssql':
+ if PY2:
+ value = value.encode(self.getDbEncoding(state))
return NQuoted(value)
return value.encode(self.getDbEncoding(state))
if hasattr(value, '__unicode__'):
http://sourceforge.net/p/sqlobject/sqlobject/ci/f40463a8193c8479c19649c320763f340397a73e
commit f40463a8193c8479c19649c320763f340397a73e
Author: Oleg Broytman <ph...@ph...>
Date: Wed Jan 18 00:18:32 2017 +0300
Document newer MS SQL server versions
diff --git a/sqlobject/mssql/mssqlconnection.py b/sqlobject/mssql/mssqlconnection.py
index 2c0647e..792298f 100644
--- a/sqlobject/mssql/mssqlconnection.py
+++ b/sqlobject/mssql/mssqlconnection.py
@@ -339,6 +339,8 @@ class MSSQLConnection(DBAPI):
9 - 2005
10 - 2008
11 - 2012
+ 12 - 2014
+ 13 - 2016
"""
if self._server_version is not None:
return self._server_version
http://sourceforge.net/p/sqlobject/sqlobject/ci/b313c1fb5d6c1fb1535dbc297f0dc71a2c8485d3
commit b313c1fb5d6c1fb1535dbc297f0dc71a2c8485d3
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 23:20:14 2017 +0300
Ignore error in case we don't have DROP permission
diff --git a/sqlobject/tests/test_auto.py b/sqlobject/tests/test_auto.py
index e201d4d..e58ab1a 100644
--- a/sqlobject/tests/test_auto.py
+++ b/sqlobject/tests/test_auto.py
@@ -191,7 +191,10 @@ class TestAuto:
dbName = conn.dbName
dropper = getattr(self, dbName + 'Drop', None)
if dropper:
- conn.query(dropper)
+ try:
+ conn.query(dropper)
+ except: # Perhaps we don't have DROP permission
+ pass
def test_classCreate(self):
class AutoTest(SQLObject):
http://sourceforge.net/p/sqlobject/sqlobject/ci/afe2ca4d6f07aaacd7aca8c238eff155ac5dbebb
commit afe2ca4d6f07aaacd7aca8c238eff155ac5dbebb
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 23:11:16 2017 +0300
Fix test_auto.py: turn off microseconds for MS SQL
diff --git a/sqlobject/tests/test_auto.py b/sqlobject/tests/test_auto.py
index f3aa6da..e201d4d 100644
--- a/sqlobject/tests/test_auto.py
+++ b/sqlobject/tests/test_auto.py
@@ -3,6 +3,7 @@ from pytest import raises
from sqlobject import KeyCol, MultipleJoin, SQLObject, StringCol, \
classregistry, sqlmeta
+from sqlobject.col import use_microseconds
from sqlobject.tests.dbtest import getConnection, setupClass
@@ -199,6 +200,8 @@ class TestAuto:
class sqlmeta(sqlmeta):
idName = 'auto_id'
fromDatabase = True
+ if AutoTest._connection.dbName == 'mssql':
+ use_microseconds(False)
john = AutoTest(firstName='john',
lastName='doe',
age=10,
@@ -221,3 +224,5 @@ class TestAuto:
columns = AutoTest.sqlmeta.columns
assert columns["lastName"].dbName == "last_name"
assert columns["wannahavefun"].dbName == "wannahavefun"
+ if AutoTest._connection.dbName == 'mssql':
+ use_microseconds(True)
http://sourceforge.net/p/sqlobject/sqlobject/ci/3d86b18aff0e935e34c2489d3737ca35ae23ab00
commit 3d86b18aff0e935e34c2489d3737ca35ae23ab00
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 22:37:59 2017 +0300
Fix concatenation operator for MSSQL/Sybase
diff --git a/docs/News.rst b/docs/News.rst
index 60866d8..caf4dfe 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -66,6 +66,8 @@ Bug fix
* Remove excessive NULLs for MSSQL/Sybase.
+* Fix concatenation operator for MSSQL/Sybase (it's ``+``, not ``||``).
+
Documentation
-------------
diff --git a/sqlobject/sqlbuilder.py b/sqlobject/sqlbuilder.py
index 76b982c..2b4cdc7 100644
--- a/sqlobject/sqlbuilder.py
+++ b/sqlobject/sqlbuilder.py
@@ -1067,6 +1067,8 @@ class _LikeQuoted:
values.append(quote_str(self.postfix, db))
if db == "mysql":
return "CONCAT(%s)" % ", ".join(values)
+ elif db in ("mssql", "sybase"):
+ return " + ".join(values)
else:
return " || ".join(values)
elif isinstance(s, string_type):
@@ -1096,6 +1098,8 @@ class CONCAT(SQLExpression):
values = [sqlrepr(expr, db) for expr in self.expressions]
if db == "mysql":
return "CONCAT(%s)" % ", ".join(values)
+ elif db in ("mssql", "sybase"):
+ return " + ".join(values)
else:
return " || ".join(values)
diff --git a/sqlobject/tests/test_sqlbuilder.py b/sqlobject/tests/test_sqlbuilder.py
index 64170b1..9a3b6e3 100644
--- a/sqlobject/tests/test_sqlbuilder.py
+++ b/sqlobject/tests/test_sqlbuilder.py
@@ -96,6 +96,7 @@ def test_CONCAT():
SOTestSQLBuilder(name='test', so_value=42)
assert sqlrepr(CONCAT('a', 'b'), 'mysql') == "CONCAT('a', 'b')"
+ assert sqlrepr(CONCAT('a', 'b'), 'mssql') == "'a' + 'b'"
assert sqlrepr(CONCAT('a', 'b'), 'sqlite') == "'a' || 'b'"
assert sqlrepr(CONCAT('prefix', SOTestSQLBuilder.q.name), 'mysql') == \
"CONCAT('prefix', so_test_sql_builder.name)"
http://sourceforge.net/p/sqlobject/sqlobject/ci/f362e07698a017da0d7b63f685f5eddf123a676b
commit f362e07698a017da0d7b63f685f5eddf123a676b
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 22:24:23 2017 +0300
Remove excessive NULLs for MSSQL/Sybase
diff --git a/docs/News.rst b/docs/News.rst
index 089ad2f..60866d8 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -64,6 +64,8 @@ Bug fix
* Fix MSSQLConnection and SybaseConnection: insert default values into a table
with just one IDENTITY column.
+* Remove excessive NULLs for MSSQL/Sybase.
+
Documentation
-------------
diff --git a/sqlobject/col.py b/sqlobject/col.py
index c919e59..a7741c9 100644
--- a/sqlobject/col.py
+++ b/sqlobject/col.py
@@ -540,8 +540,6 @@ class SOStringLikeCol(SOCol):
def _sybaseType(self):
self._check_case_sensitive("SYBASE")
type = self._sqlType()
- if not self.notNone and not self.alternateID:
- type += ' NULL'
return type
def _mssqlType(self):
@@ -556,8 +554,6 @@ class SOStringLikeCol(SOCol):
type = 'VARCHAR(%i)' % self.length
else:
type = 'CHAR(%i)' % self.length
- if not self.notNone and not self.alternateID:
- type += ' NULL'
return type
def _firebirdType(self):
@@ -895,11 +891,11 @@ class SOKeyCol(SOCol):
return self.key_type[self._idType()]
def _sybaseType(self):
- key_type = {int: "NUMERIC(18,0) NULL", str: "TEXT"}
+ key_type = {int: "NUMERIC(18,0)", str: "TEXT"}
return key_type[self._idType()]
def _mssqlType(self):
- key_type = {int: "INT NULL", str: "TEXT"}
+ key_type = {int: "INT", str: "TEXT"}
return key_type[self._idType()]
def _firebirdType(self):
http://sourceforge.net/p/sqlobject/sqlobject/ci/970d6e68dc1441dbbdd52de0c0e74081a2297542
commit 970d6e68dc1441dbbdd52de0c0e74081a2297542
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 21:43:43 2017 +0300
Fix MSSQLConnection and SybaseConnection
Insert default values into a table with just one IDENTITY column.
diff --git a/docs/News.rst b/docs/News.rst
index 7ad5582..089ad2f 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -61,6 +61,9 @@ Bug fix
* Fix MSSQLConnection.columnsFromSchema: remove () from default value.
+* Fix MSSQLConnection and SybaseConnection: insert default values into a table
+ with just one IDENTITY column.
+
Documentation
-------------
diff --git a/sqlobject/mssql/mssqlconnection.py b/sqlobject/mssql/mssqlconnection.py
index 633fe24..2c0647e 100644
--- a/sqlobject/mssql/mssqlconnection.py
+++ b/sqlobject/mssql/mssqlconnection.py
@@ -169,7 +169,10 @@ class MSSQLConnection(DBAPI):
else:
c.execute('SET IDENTITY_INSERT %s OFF' % table)
- q = self._insertSQL(table, names, values)
+ if names and values:
+ q = self._insertSQL(table, names, values)
+ else:
+ q = "INSERT INTO %s DEFAULT VALUES" % table
if self.debug:
self.printDebug(conn, q, 'QueryIns')
c.execute(q)
diff --git a/sqlobject/sybase/sybaseconnection.py b/sqlobject/sybase/sybaseconnection.py
index 15e8914..f79441a 100644
--- a/sqlobject/sybase/sybaseconnection.py
+++ b/sqlobject/sybase/sybaseconnection.py
@@ -84,7 +84,10 @@ class SybaseConnection(DBAPI):
identity_insert_on = True
c.execute('SET IDENTITY_INSERT %s ON' % table)
- q = self._insertSQL(table, names, values)
+ if names and values:
+ q = self._insertSQL(table, names, values)
+ else:
+ q = "INSERT INTO %s DEFAULT VALUES" % table
if self.debug:
self.printDebug(conn, q, 'QueryIns')
c.execute(q)
http://sourceforge.net/p/sqlobject/sqlobject/ci/4e781b567ce07b65a9f559b529c2d61cc00f3713
commit 4e781b567ce07b65a9f559b529c2d61cc00f3713
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 21:33:11 2017 +0300
Fix MSSQLConnection.columnsFromSchema: remove () from default value
diff --git a/docs/News.rst b/docs/News.rst
index f0e3466..7ad5582 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -56,6 +56,11 @@ Drivers (work in progress)
* Add support for `pyfirebirdsql <https://pypi.python.org/pypi/firebirdsql>`_.
+Bug fix
+-------
+
+* Fix MSSQLConnection.columnsFromSchema: remove () from default value.
+
Documentation
-------------
diff --git a/sqlobject/mssql/mssqlconnection.py b/sqlobject/mssql/mssqlconnection.py
index af7aa48..633fe24 100644
--- a/sqlobject/mssql/mssqlconnection.py
+++ b/sqlobject/mssql/mssqlconnection.py
@@ -271,6 +271,9 @@ class MSSQLConnection(DBAPI):
if defaultText[0] == "'":
defaultText = defaultText[1:-1]
else:
+ if t in ("int", "float", "numeric") and \
+ defaultText[0] == "(":
+ defaultText = defaultText[1:-1]
if t == "int":
defaultText = int(defaultText)
if t == "float":
http://sourceforge.net/p/sqlobject/sqlobject/ci/a2b4c6ac06dbe68d188520d5b67bdabe978011d9
commit a2b4c6ac06dbe68d188520d5b67bdabe978011d9
Author: Oleg Broytman <ph...@ph...>
Date: Tue Jan 17 00:02:28 2017 +0300
Add parameter ``timeout`` for MSSQLConnection (only for pymssql)
diff --git a/docs/News.rst b/docs/News.rst
index 0d60aee..f0e3466 100644
--- a/docs/News.rst
+++ b/docs/News.rst
@@ -38,6 +38,9 @@ Minor features
* Add support for `PyMySQL <https://github.com/PyMySQL/PyMySQL/>`_ - pure
python mysql interface).
+* Add parameter ``timeout`` for MSSQLConnection (usable only with pymssql
+ driver); timeouts are in seconds.
+
Drivers (work in progress)
--------------------------
diff --git a/sqlobject/mssql/mssqlconnection.py b/sqlobject/mssql/mssqlconnection.py
index 3ec7366..af7aa48 100644
--- a/sqlobject/mssql/mssqlconnection.py
+++ b/sqlobject/mssql/mssqlconnection.py
@@ -60,8 +60,8 @@ class MSSQLConnection(DBAPI):
self.make_conn_str = lambda keys: conn_str % (
keys.host, keys.db, keys.user, keys.password)
- kw.pop("sspi", None)
kw.pop("ncli", None)
+ kw.pop("sspi", None)
else: # pymssql
self.dbconnection = sqlmodule.connect
@@ -69,14 +69,20 @@ class MSSQLConnection(DBAPI):
# don't know whether pymssql uses unicode
self.usingUnicodeStrings = False
+ timeout = kw.pop('timeout', None)
+ if timeout:
+ timeout = int(timeout)
+ self.timeout = timeout
+
def _make_conn_str(keys):
keys_dict = {}
for attr, value in (
+ ('database', keys.db),
('user', keys.user),
('password', keys.password),
('host', keys.host),
('port', keys.port),
- ('database', keys.db),
+ ('timeout', keys.timeout),
):
if value:
keys_dict[attr] = value
diff --git a/tox.ini b/tox.ini
index 7f86236..cf0066a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -25,7 +25,6 @@ deps =
firebirdsql: firebirdsql
postgres-pg8000: pg8000
mssql: pymssql
- mssql: pytest-timeout
passenv = CI TRAVIS TRAVIS_* PGPASSWORD
# Don't fail or warn on uninstalled commands
whitelist_externals =
@@ -272,7 +271,7 @@ commands = flake8 .
commands =
-sqlcmd -U sa -P "Password12!" -S .\SQL2014 -Q "DROP DATABASE sqlobject_test"
sqlcmd -U sa -P "Password12!" -S .\SQL2014 -Q "CREATE DATABASE sqlobject_test"
- pytest --timeout=30 --cov=sqlobject -D "mssql://sa:Password12!@localhost\SQL2014/sqlobject_test?driver=pymssql&debug=1" tests include/tests inheritance/tests versioning/test
+ pytest --cov=sqlobject -D "mssql://sa:Password12!@localhost\SQL2014/sqlobject_test?driver=pymssql&timeout=30&debug=1" tests include/tests inheritance/tests versioning/test
sqlcmd -U sa -P "Password12!" -S .\SQL2014 -Q "DROP DATABASE sqlobject_test"
-----------------------------------------------------------------------
Summary of changes:
docs/News.rst | 17 +++++++++++++++++
sqlobject/col.py | 11 ++++-------
sqlobject/mssql/mssqlconnection.py | 27 ++++++++++++++++++++++-----
sqlobject/sqlbuilder.py | 4 ++++
sqlobject/sybase/sybaseconnection.py | 5 ++++-
sqlobject/tests/test_auto.py | 10 +++++++++-
sqlobject/tests/test_sqlbuilder.py | 1 +
tox.ini | 3 +--
8 files changed, 62 insertions(+), 16 deletions(-)
hooks/post-receive
--
SQLObject development repository
|