My favorites
▼
|
Sign in
pyodbc
Python ODBC library
Project Home
Downloads
Wiki
READ-ONLY: This project has been
archived
. For more information see
this post
.
Search
Search within:
All issues
Open issues
New issues
Issues to verify
for
Advanced search
Search tips
Subscriptions
Issue
91
attachment: dectest.py
(2.0 KB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""This unit test demonstrates an apparent bug with pyodbc 2.1.7 when
trying to insert Decimal values which occupy the maximum precision of 38.
The first test case passes because the precision is less than 38.
The second fails when the precision is right at 38 (But it ought to pass.)
You might need to modify the CONNSTR line to get this to work on your site.
"""
Driver = '{SQL Server}'
host = 'localhost'
database = 'journyx'
CONNSTR = "DRIVER=%(Driver)s;SERVER=%(host)s;DATABASE=%(database)s;Trusted_Connection=Yes" % locals()
import unittest, sys
from decimal import Decimal
class pyodbcDecimalTestBase(unittest.TestCase):
"""Test less than the maximum allowed precision."""
PRECISION = 37
SCALE = 10
def setUp(self):
import pyodbc
self.db = pyodbc.connect(CONNSTR, autocommit=True)
self.cursor = self.db.cursor()
createTableSQL = "create table dectest (decval decimal(%s,%s) null)" % (self.PRECISION, self.SCALE)
self.cursor.execute(createTableSQL)
return
def tearDown(self):
createTableSQL = "drop table dectest"
self.cursor.execute(createTableSQL)
return
def testWithinBounds(self):
# Construct a decimal that uses the maximum precision and scale.
decStr = '9' * (self.PRECISION - self.SCALE) + "." + '9' * self.SCALE
testDec = Decimal(decStr)
# Assert that it matches our declared precision
self.assert_(len(str(testDec)) == (self.PRECISION + 1))
testSQL = "insert into dectest values (?)"
params = (testDec,)
self.cursor.execute(testSQL, params)
self.cursor.execute("select * from dectest")
result = self.cursor.fetchall()
outDec = result[0][0]
self.assertEqual(outDec, testDec)
return
class pyodbcDecimalTestMaxPrec(pyodbcDecimalTestBase):
"""Test the maximum allowed precision. This should also pass but
isn't under pyodbc 2.1.7."""
PRECISION = 38
SCALE = 10
if __name__ == "__main__":
unittest.main()
Powered by
Google Project Hosting