2016-04-15 19 views
0

我在SQLAlchemy中使用了一些新的示例來創建表並向其中插入信息,它的工作效率爲100%。SQLAlchemy:從數據庫更新和刪除值

但是我沒有找到的是一些例子,我怎樣才能更新&從數據庫中刪除一些信息。

我在做什麼是:

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 

因此,在這個代碼,它會打印出「新人」我的問題是我怎麼可以更新或刪除嗎?

+1

你能說清楚「更新和刪除」是什麼意思嗎?看起來這將相當於「刪除」;數據沒有了。 – chepner

+0

看到這裏(他們討論使用原始的sql和執行 - 似乎可以爲你工作):http://stackoverflow.com/questions/17972020/how-to-execute-raw-sql-in-sqlalchemy-flask-app – flyingmeatball

回答

0

下面是對SQLAlchemy的每個CRUD操作一些例如(ommiting創建,讀取,你已經知道如何執行這些): 首先,需要進口和CONFIGS任何操作:

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

然後peforming更新:

# 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中執行。