Я действительно удивлен медленной вставкой строк с использованием SQLAlchemy с AWS Lightsail до такой степени, что считаю, что, должно быть, я что-то делаю не так.
Я могу выполнять SQL команды через MySQL Workbench, и они обрабатываются за доли секунды, и я могу использовать локальную базу данных sqlite и снова очень быстро. Та же самая вставка с использованием Lighsail занимает> 14 секунд, и 1500 строк не кажутся чрезмерными. Я ценю, что у кого-то не было бы 1500 электронных писем, это был только быстрый пример.
Я все делаю неправильно и есть более эффективный способ добавления / фиксации / использования Lightsail или производительность действительно плохая?
# sqlite example
# Adding: 0:00:00.254232
# aws (Lightsail Database)
# Adding: 0:00:14.022152
Мой код просто базовый c, используя простой пример из учебника:
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref, sessionmaker
import datetime
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
name = Column(String(50))
addresses = relationship('Address', backref='person',
lazy='dynamic')
class Address(Base):
__tablename__ = 'address'
id = Column(Integer(), primary_key=True)
email = Column(String(50))
person_id = Column(Integer(), ForeignKey('person.id'))
address_list = []
for email in range(1,1500):
a = Address(email=str(email)+"@hotmail.com")
address_list.append(a)
p = Person(name='foo', addresses=address_list)
# engine = create_engine("mysql+pymysql://username:password@lrds.amazonaws.com/awstest")
engine = create_engine("sqlite:///testing.sqlite")
Base.metadata.create_all(engine, checkfirst=True)
Session = sessionmaker(bind=engine)
time_start = datetime.datetime.now()
session = Session()
session.add(p)
session.commit()
time_end = datetime.datetime.now()
time_difference = time_end - time_start
print("Adding: ", time_difference)
print(p.addresses.count())
# sqlite example
# Adding: 0:00:00.254232
# aws (Lightsail Database)
# Adding: 0:00:14.022152