Исправление
WitcherGeralt,
(текущая версия)
:
Твой же код:
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String, Date
from sqlalchemy.orm import Session
from enum import Enum
# import pandas as pd
from sqlalchemy.exc import IntegrityError
from datetime import datetime, date
# import numpy as np
engine = create_engine('sqlite:///:memory:', echo=False)
@contextmanager
def sessionScope():
try:
session = Session(bind=engine)
yield session
session.commit()
except Exception as e:
print(e)
session.rollback()
finally:
session.close()
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyTable1(Base):
__tablename__ = 'MyTable1'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
cdate = Column(Date, nullable=False)
def getAll():
result = []
with sessionScope() as session:
rows = session.query(MyTable1).all()
print('- inside the context manager ')
print(rows)
result = rows
return result
if __name__ == '__main__':
Base.metadata.create_all(engine, tables=[MyTable1.__table__])
with Session(bind=engine) as session:
row = MyTable1(id=1, name='foo', cdate=date.today())
print(type(row.id), row.id, row.name, row.cdate)
session.add(row)
session.commit()
rres = getAll()
print('- outside the context manager:')
print(rres)
Без проблем можешь юзать.
Вывод:
<class 'int'> 1 foo 2021-05-11
- inside the context manager
[<__main__.MyTable1 object at 0x7f8299909780>]
- outside the context manager:
[<__main__.MyTable1 object at 0x7f8299909780>]
Исправление
WitcherGeralt,
:
Твой же код:
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String, Date
from sqlalchemy.orm import Session
from enum import Enum
# import pandas as pd
from sqlalchemy.exc import IntegrityError
from datetime import datetime, date
# import numpy as np
engine = create_engine('sqlite:///:memory:', echo=False)
@contextmanager
def sessionScope():
try:
session = Session(bind=engine)
yield session
session.commit()
except Exception as e:
print(e)
session.rollback()
finally:
session.close()
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyTable1(Base):
__tablename__ = 'MyTable1'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
cdate = Column(Date, nullable=False)
def getAll():
result = []
with sessionScope() as session:
rows = session.query(MyTable1).all()
print('- inside the context manager ')
print(rows)
result = rows
return result
if __name__ == '__main__':
Base.metadata.create_all(engine, tables=[MyTable1.__table__])
with Session(bind=engine) as session:
row = MyTable1(id=1, name='foo', cdate=date.today())
print(type(row.id), row.id, row.name, row.cdate)
session.add(MyTable1(id=1, name='foo', cdate=date.today()))
session.commit()
rres = getAll()
print('- outside the context manager:')
print(rres)
Без проблем можешь юзать.
Вывод:
<class 'int'> 1 foo 2021-05-11
- inside the context manager
[<__main__.MyTable1 object at 0x7f8299909780>]
- outside the context manager:
[<__main__.MyTable1 object at 0x7f8299909780>]
Исходная версия
WitcherGeralt,
:
Твой же код:
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String, Date
from sqlalchemy.orm import Session
from enum import Enum
# import pandas as pd
from sqlalchemy.exc import IntegrityError
from datetime import datetime, date
# import numpy as np
engine = create_engine('sqlite:///:memory:', echo=False)
@contextmanager
def sessionScope():
try:
session = Session(bind=engine)
yield session
session.commit()
except Exception as e:
print(e)
session.rollback()
finally:
session.close()
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyTable1(Base):
__tablename__ = 'MyTable1'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
cdate = Column(Date, nullable=False)
def getAll():
result = []
with sessionScope() as session:
rows = session.query(MyTable1).all()
print('- inside the context manager ')
print(rows)
result = rows
return result
if __name__ == '__main__':
Base.metadata.create_all(engine, tables=[MyTable1.__table__])
with Session(bind=engine) as session:
row = MyTable1(id=1, name='foo', cdate=date.today())
print(type(row.id), row.id, row.name, row.cdate)
session.add(MyTable1(id=1, name='foo', cdate=date.today()))
session.commit()
rres = getAll()
print('- outside the context manager:')
print(rres)
Без проблем можешь юзать.
Вывод:
<class 'int'> 1 foo 2021-05-11
- inside the context manager
[<__main__.MyTable1 object at 0x7f8299909780>]
- outside the context manager:
[<__main__.MyTable1 object at 0x7f8299909780>]