테스트 테이블에서 일부 데이터를 지우고 싶습니다. 그러나이 문서를 따른 후에도 내가 뭘 잘못하고 있는지 잘 모르겠습니다. :
hostname = 'localhost'
db_name = 'xx'
db_port = 'xx'
login = 'xx'
pwd = 'xx'
con_string = 'mysql+mysqlconnector://{login}:{passwd}@{hostname}:{port}/{db}'
engine_str = con_string.format(
login=login, passwd=pwd, hostname=hostname, port=db_port, db=db_name
)
try:
engine = sqlalchemy.create_engine(engine_str, echo=False)
session = sessionmaker(bind=engine)
connection = engine.connect()
session = session(bind=connection)
Base = declarative_base()
except exc.SQLAlchemyError:
raise
t_packages = Table('test_table', Base.metadata, autoload_with=engine)
session.query(t_packages).filter_by(environment='sandbox').delete()
에러 메시지:
line 119, in delete_package_reference_by_env
session.query(t_packages).filter_by(environment=environment).delete()
File "C:\Python27\lib\site-packages\sqlalchemy\orm\query.py", line 3155, in delete
delete_op.exec_()
File "C:\Python27\lib\site-packages\sqlalchemy\orm\persistence.py", line 1167, in exec_
self._do_pre_synchronize()
File "C:\Python27\lib\site-packages\sqlalchemy\orm\persistence.py", line 1221, in _do_pre_synchronize
target_cls = query._mapper_zero().class_
AttributeError: 'NoneType' object has no attribute 'class_'
나는 사용해야했다 :
d = t_packages.delete(t_packages.c.environment == 'sandbox')
with engine.connect() as conn:
conn.execute(d)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다