कोड पिछली पंक्ति, को छोड़कर, चरण 2 -को छोड़कर, एक चरण-दर-चरण प्रतिलिपि है, मैं क्वेरी के बाद सभी तालिकाओं को छोड़ना चाहता था। ,SQLAlchemy टेबल छोड़ने पर अवरुद्ध
चिह्नित लाइन से पता चलता है, ड्रॉप तालिका प्रक्रिया table metadata lock
की वजह से फांसी पर लटका दिया गया था: लेकिन कार्यक्रम Base.metadata.drop_all(bind=engine)
पर अवरुद्ध, नीचे दिए गए उस समय MySQL की स्थिति (MySQL Workbench से लिया गया) है मेरा सुझाव है कि मेटाडाटा लॉक result = session.query(User).all()
के कारण हुआ था क्योंकि यदि प्रोग्राम हटा दिया गया था, तो प्रोग्राम को ब्लॉक नहीं किया गया था, लेकिन मुझे अभी भी कारण पता नहीं है। तो मेरे सवाल है: क्यों ऐसा होता है() या प्रतिबद्ध (या रोलबैक()) को अवरुद्ध
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(16))
fullname = Column(String(16))
password = Column(String(16))
def __init__(self, name, fullname, password):
self.name = name
self.fullname = fullname
self.password = password
def __repr__(self):
return "<User('%s','%s', '%s')>" % (self.name, self.fullname, self.password)
uri = 'mysql://root:[email protected]/test_sa'
engine = create_engine(uri, echo=False)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
user = User('ed', 'Ed Jones', 'edspassword')
session.add(user)
session.commit()
result = session.query(User).all()
print len(result)
Base.metadata.drop_all(bind=engine)
धन्यवाद, मुझे मिल गया! क्या [यह पृष्ठ] (http://dev.mysql.com/doc/refman/5.5/en/metadata-locking.html) मुझे वही चीज़ समझा रहा है? – Reorx
हाँ (15 वर्ण भरना) – zzzeek