Я хочу добавить данные в мою таблицу, используя ORM в Python - PullRequest
0 голосов
/ 17 октября 2019

Я хочу добавить данные в свою базу данных, используя ORM, и я новичок в ORM в Python. Я запутался в SQLAlchemy и Flask-SQLAlchemy. "Я пробовал это, но не знаю, как действовать дальше


from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

engine = create_engine('sqlite:///C:\\Users\\52118792\\Desktop\\test.db')
Base = declarative_base()

class Student(Base):
    __tablename__='Student'
    name=Column(String)
    seq=Column(Integer)

    def __init__(self,name,sequence):
        self.name=name
        self.sequence=sequence

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Сначала я бы предложил вам создать миграции. Мой инструмент выбора - alembic. Чтобы создать проект alembic, выполните следующие шаги:

  • alembic init alembic
  • В каталоге alembic в env.py необходимо назначить целевые метаданные. Это что-то вроде target_metadata = Base.metadata, где Base - это декларативная база для моделей.
  • В env.py также следует импортировать модель Student. Так что наш alembic может распознавать изменения модели.
  • В файле конфигурации alembic.ini необходимо указать путь в БД, для которого вы назначите свой путь sqlite:///C:\\Users\\...\\myDB.db для sqlalchemy.url.
  • После того, как вы настроили alembic, запустите alembic revision --autogenerate -m "Message", который обнаружит изменения в вашей Student модели и создаст миграции. Запустите alembic upgrade head для применения этих миграций.
  • Теперь ваша таблица Student создана в sqlite и готова к использованию.
  • Создайте сеанс из созданного вами движка с помощьючто-то вроде
Session = sessionmaker()
Session.configure(bind=engine)
  • Из этой фабрики Session мы можем создать объект сеанса и использовать его для выполнения операций SQL. например,
session = Session()
students = session.query(Student).all()

for student in students:
    print(student.seq)
    print(student.name)
  • Этот код напечатает всех студентов.

Это объяснение довольно краткое, но я надеюсь, что оно поможет вам начать использовать sqlalchemy.

Примечание: я не рассматривал сценарии веб-приложений и аналогично. В этом случае вам придется читать по scoped_session.

. Для справки, вы можете пройти по этому коду по номеру https://github.com/pranav93/sample_alembic_win

. Для alembic - https://alembic.sqlalchemy.org/en/latest/tutorial.html

.
0 голосов
/ 17 октября 2019

Flask-SqlAlchemy обычно используется для колб, в противном случае достаточно простого SqlAlchemy.

Flask-SqlAlchemy - это обертка над SqlAlchemy и дает вам следующие преимущества:

  1. Предварительно настроенный сеанс, механизм и метаданные с заданной областью.
  2. Базовый класс модели , для которого настроена декларативная база.
  3. Базовый класс модели имеет прикрепленный атрибут запросак нему, который может использоваться для запроса модели.
  4. Вам не нужно удалять сеанс в конце вашего коммита.

Вот как вы можете использовать свой SqlAlchemyкод.

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///C:\\Users\\52118792\\Desktop\\test.db', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
user = Student("test", 123)
session.add(user)
session.commit()
...