#!/bin/pythonimport sqlalchemyfrom sqlalchemy import Column,Integer,String,DateTime,Index,MetaDatafrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import relationshipfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.dialects import oracleBase = declarative_base()import logginglogging.basicConfig()logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)class TypeTest(Base): __tablename__ = "TYPETESTZ" thisisinteger = Column(Integer,primary_key = True) thisisnotadatetime = Column(DateTime) thisisdatetime = Column(oracle.TIMESTAMP) if __name__ == "__main__": engine = sqlalchemy.create_engine('oracle://richard:password@xe') Metadata = Base.Metadata Metadata.create_all(engine)
日志输出:
INFO:sqlalchemy.engine.base.Engine:SELECT USER FROM DUALINFO:sqlalchemy.engine.base.Engine:{}INFO:sqlalchemy.engine.base.Engine:SELECT table_name FROM all_tables WHERE table_name = :name AND owner = :schema_nameINFO:sqlalchemy.engine.base.Engine:{'name': u'TYPETESTZ','schema_name': u'RICHARD'}INFO:sqlalchemy.engine.base.Engine:CREATE table "TYPETESTZ" ( thisisinteger INTEGER NOT NulL,thisisnotadatetime DATE,thisisdatetime TIMESTAMP,PRIMARY KEY (thisisinteger))INFO:sqlalchemy.engine.base.Engine:{}INFO:sqlalchemy.engine.base.Engine:COMMIT解决方法 Oracle没有DateTime数据类型.在Oracle中,日期包含一天(即2012年8月21日)和时间(即下午1:30),粒度为1秒.没有其他限定符的时间戳只允许您将粒度增加到纳秒(10 ^ -9秒). sqlAlchemy将DateTime转换为Oracle Date似乎是合理的,除非有一些要求DateTime支持小数秒(在这种情况下你需要一个时间戳)或时区(在这种情况下你需要一个带有[local]的时间戳)时区). 总结
以上是内存溢出为你收集整理的获取使用SQLAlchemy 0.7.8和Oracle XE生成的“错误”类型全部内容,希望文章能够帮你解决获取使用SQLAlchemy 0.7.8和Oracle XE生成的“错误”类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)