Je me connecte au serveur mssql par pyodbc, via le pilote odbc FreeTDS, sur linux ubuntu 10.04.
Sqlalchemy 0.5 utilise DATETIME
para sqlalchemy.Date()
champs.
Maintenant, Sqlalchemy 0.6 utilise DATE
mais sql server 2000 ne dispose pas d'un système de gestion de la qualité. DATE
type. Comment puis-je faire DATETIME
être la valeur par défaut pour sqlalchemy.Date()
sur sqlalchemy 0.6 mssql+pyodbc
dialecte ?
J'aimerais le garder aussi propre que possible.
Voici le code permettant de reproduire le problème :
import sqlalchemy
from sqlalchemy import Table, Column, MetaData, Date, Integer, create_engine
engine = create_engine(
'mssql+pyodbc://sa:sa@myserver/mydb?driver=FreeTDS')
m = MetaData(bind=engine)
tb = sqlalchemy.Table('test_date', m,
Column('id', Integer, primary_key=True),
Column('dt', Date())
)
tb.create()
Et voici le retour de trace que je reçois :
Traceback (most recent call last):
File "/tmp/teste.py", line 15, in <module>
tb.create()
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/schema.py", line 428, in create
bind.create(self, checkfirst=checkfirst)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1647, in create
connection=connection, **kwargs)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1682, in _run_visitor
**kwargs).traverse_single(element)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/sql/visitors.py", line 77, in traverse_single
return meth(obj, **kw)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/ddl.py", line 58, in visit_table
self.connection.execute(schema.CreateTable(table))
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1157, in execute
params)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1210, in _execute_ddl
return self.__execute_context(context)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1268, in __execute_context
context.parameters[0], context=context)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1367, in _cursor_execute
context)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/base.py", line 1360, in _cursor_execute
context)
File "/home/nosklo/.local/lib/python2.6/site-packages/sqlalchemy/engine/default.py", line 277, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (ProgrammingError)
('42000', '[42000] [FreeTDS][SQL Server]Column or parameter #2:
Cannot find data type DATE. (2715)
(SQLExecDirectW)')
'\nCREATE TABLE test_date (\n\tid INTEGER NOT NULL IDENTITY(1,1),
\n\tdt DATE NULL, \n\tPRIMARY KEY (id)\n)\n\n' ()