Kod, sqlacmey'in orm tutorial numaralı son satırından, son satır hariç, sorgudan sonra tüm tabloları bırakmayı amaçladığım bir adım adım kopyasıdır. ,SQLAlchemy tabloları bırakarak engelleniyor
belirgin çizgi gösterildiği gibi, damla tabloda işlem table metadata lock
nedeniyle asılan Ama Base.metadata.drop_all(bind=engine)
bloke programı aşağıda (MySQL WorkBench'den alınmıştır) o zaman MySQL durumunu olan Meta satırı kilidinin result = session.query(User).all()
tarafından yapılmasını öneririm çünkü program bu satırın kaldırılması durumunda engellenmemiş, ama nedenini hala bilmiyorum. Benim soru edilir: Neden hedefim bu() veya (işlemek, veya geri alma()) engelleme
#!/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)
Teşekkürler, anladım! Karşılaştığım şeyi açıklayan [bu sayfa] (http://dev.mysql.com/doc/refman/5.5/en/metadata-locking.html) var mı? – Reorx
yep (15 karakter doldurarak) – zzzeek