Python SQL Alchemy无事务开始错误

Python SQL Alchemy无事务开始错误,python,sqlalchemy,Python,Sqlalchemy,我运行以下代码 db = create_engine('sqlite:///tracking_test.db') db.echo= True metadata = MetaData(db) session = create_session(bind=db) #define tables, if they exist sqlalchemly will find them and sycn otherwise they will be created delivered= Table('delive

我运行以下代码

db = create_engine('sqlite:///tracking_test.db')
db.echo= True
metadata = MetaData(db)
session = create_session(bind=db)
#define tables, if they exist sqlalchemly will find them and sycn otherwise they will be created
delivered= Table('delivered', metadata,
    Column('delivered_id',Integer,primary_key=True),
    Column('domain',String(200)),
    Column('path',String(500)),
    )

class Delivered(object):        
    def __init__(self,obj):
        self.domain=u'%s' % obj.get("dm","")
        self.path=u'%s' % obj.get("pth","")


report1t = Table('clicked', metadata,
    Column('clicked_id',Integer,primary_key=True),
    Column('domain',String(200)),
    Column('path',String(500)),

)

class report1(object):
    def __init__(self,obj):
        self.domain=u'%s' % obj.get("dm","")
        self.path=u'%s' % obj.get("pth","")


metadata.create_all()
mapper(report1, report1t)
mapper(Delivered,delivered)
result= {}#some dict
newT = Delivered(result)
if newT:
    session.add(newT)
    session.commit()
    session.flush()
我得到了这个错误 sqlalchemy.exc.InvalidRequestError:未开始任何事务

会议内容如下:

{'autocommit': True, 'autoflush': False, 'transaction': None, 'hash_key': 4317750544, 'expire_on_commit': False, '_new': {<sqlalchemy.orm.state.InstanceState object at 0x101a79ad0>: <__main__.adDelivered object at 0x101a799d0>}, 'bind': Engine(sqlite:///adtracking_test.db), '_deleted': {}, '_flushing': False, 'identity_map': {}, 'dispatch': <sqlalchemy.event.SessionEventsDispatch object at 0x101a82f90>, '_enable_transaction_accounting': True, '_identity_cls': <class 'sqlalchemy.orm.identity.WeakInstanceDict'>, 'twophase': False, '_Session__binds': {}, '_query_cls': <class 'sqlalchemy.orm.query.Query'>}
{'autocommit':True,'autoflush':False,'transaction':None,'hash_key':4317750544,'expire_on_commit':False,'u new':{:},'bind':引擎(sqlite:///adtracking_test.db),“'u deleted':{},'u flushing':False,'identity\u map':{},'dispatch':,'u enable\u transaction\u accounting':True,'u identity\u cls':,'twophase':False,'u Session\u binds':{},“\u query\u cls”:
有人知道我做错了什么吗

谢谢,
CG

如果您发布完整的回溯,将非常有用。但是,我认为问题在于创建会话的方式。我认为您应该使用
sessionmaker
而不是
create\u session
(我以前从未见过该函数,也没有在任何地方看到它的文档)
sessionmaker
创建一个新的
Session
类,您需要实例化它。因此:

Session = sessionmaker(bind=db)
session = Session()
...
session.add(newT)
执行以下代码行中提到的提交时,出现类似错误“未开始任何事务”:

    db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
    db_session.add(target)
    db_session.commit()
在我的例子中,由于我将autocommit设置为True并尝试提交(),所以发生了错误。为解决此问题,已将自动提交设置为False,如下面的代码所示

db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
谢谢,
Karthik

这似乎起到了作用,我不确定我在哪里找到了createsession。