पृष्ठभूमि: बोतल/कुप्पी के SQLAlchemy/कुप्पी के WTF, कथात्मक और सत्र scoped का उपयोग करSQLAlchemy सत्र त्रुटि
सरल POST
आपरेशन:
@tas.route('/order_add', methods=['GET', 'POST'])
def tas_order_add():
if request.method == 'POST':
order_form = OrderForm()
if order_form.validate_on_submit():
order = Order()
order_form.populate_obj(order)
db_session.add(order)
db_session.commit()
अब इसे चलाने के लिए मैं कोई त्रुटि मिलती है की कोशिश कर रहा
InvalidRequestError: Object '' is already attached to session '1' (this is '2')
विलय करने के लिए जोड़ने के बदलने से समस्या का हल है, लेकिन:
- मैं कारण है कि मैं एक वस्तु मर्ज करने के लिए है, जबकि मैं सिर्फ यह
मैं बदल विलय और लाइन में गुण कुछ में से एक परिभाषित करने की कोशिश करने के लिए जोड़ रहे हैं तो शुरू की कर पता नहीं है
order = Order() order_form.populate_obj(order) order.order_status = OrderStatus.query.filter(OrderStatus.code=='PLACED').first() db_session.merge(order) db_session.commit()
मैं
InvalidRequestError: Object '' is already attached to session '2' (this is '1')
कोई मुझे बात कर सकते हैं जहां मैंने कुछ गलत कर रहा हूँ क्योंकि यह मुझे पागल गाड़ी चला रहा है OrderStatus वस्तु पर एक ही त्रुटि मिलती है, बस अब। मुझे स्क्लेक्लेमी के साथ कुछ अनुभव है लेकिन यह पहली बार है जब मैं ऐसा व्यवहार देखता हूं और मैं समस्या को इंगित नहीं कर सकता।
मुझे मिला सभी खोजना डबल डेटाबेस सत्र प्रारंभिक समस्या के साथ एक समस्या थी, लेकिन मैं इस मामले को विश्वास नहीं करता हूं।
संपादित
db_session सामग्री
from sqlalchemy.engine import create_engine
from sqlalchemy.ext.declarative.api import declarative_base
from sqlalchemy.orm.scoping import scoped_session
from sqlalchemy.orm.session import sessionmaker
engine = create_engine('sqlite:///fundmanager_devel.db', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
जहां db_session परिभाषित किया गया है? क्या आप इसके लिए कोड जोड़ सकते हैं? –
प्रश्न –