我想在python中使用ORM将数据添加到表中

时间:2019-10-17 08:23:15

标签: python orm sqlalchemy

我想使用ORM在数据库中添加数据,而我是python中的ORM的新手。我对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 :(得分:0)

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()

答案 1 :(得分:0)

首先,我建议您创建迁移。我选择的工具是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。

注意:我没有考虑过Webapp的场景,同样也没有考虑。在这种情况下,您将必须阅读scoped_session

作为参考,您可以在https://github.com/pranav93/sample_alembic_win浏览此代码

对于除菌剂,请通过https://alembic.sqlalchemy.org/en/latest/tutorial.html