【问题标题】:SQLAlchemy: update & delete value from databaseSQLAlchemy:更新和删除数据库中的值
【发布时间】:2016-08-07 10:04:00
【问题描述】:

我是 SQLAlchemy 的新手,我使用了一些示例来创建表并向其中插入信息,它的工作效率是 100%。

但我没有找到一些关于如何从数据库中更新和删除一些信息的示例。

我正在做的是:

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

Base = declarative_base()

## create
class Person(Base):
    __tablename__ = 'person'
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

engine = create_engine('sqlite:///database.db')
Base.metadata.create_all(engine)

## insert

Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)

session = DBSession()
new_person = Person(name='new person')
session.add(new_person)
session.commit()

## fetch
getperson = session.query(Person).first()
print getperson.name

# this will print : new person

# I need some example to how can I update and delete this : new person

所以在这段代码中它会打印“新人”我的问题是如何更新或删除它?

【问题讨论】:

  • 你能解释一下你所说的“更新和删除”是什么意思吗?这似乎相当于“删除”;无论哪种方式,数据都消失了。
  • 见这里(他们讨论使用原始 sql 并执行 - 似乎这对你有用):stackoverflow.com/questions/17972020/…

标签: python python-2.7 sqlite sqlalchemy


【解决方案1】:

以下是 sqlalchemy 中每个 CRUD 操作的一些示例(省略 Create,Read,因为您已经知道如何执行这些操作): 首先,任何操作都需要导入和配置:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# Category, Item, User are my tables
from database_setup import Base, Category, Item, User

# Generating session to connect to the db's ORM
engine = create_engine('sqlite:///catalogwithusers.db') # my db
Base.metadata.bind = engine
DBSession = sessionmaker(bind = engine)
session = DBSession()

然后执行更新:

# Get the item filtering by it's id using a one() query on Item table
# If query is not empty, update the attributes, add query to session and commit

q = session.query(Item).filter_by(id=item_id).one()
if q != []:
    q.name = edited_name
    q.description = edited_description
    session.add(q)
    session.commit()

最后,执行删除:

# Again get the item similarly to the example above
# Then if query returned results, use the delete method and commit
q = session.query(Item).filter_by(id=item_id).one()
if q != []:
    session.delete(q)
    session.commit()

这些示例取自here。我建议你看看。 ORM 创建在 database_setup.py 内部,CRUD 操作在 project.py 和 populatecatalog.py 内部执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2017-11-08
    相关资源
    最近更新 更多