筆記03:sqlalchemy增刪改查

weixin_34124651發表於2018-03-30

sqlalchemy增刪改查

先定義好類

檔名:userdatabase .py
# -*- coding: utf-8 -*-
"""
作用:
1、連線資料庫
2、建立表

"""

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

host = 'localhost'
port = '3306'
username = 'root'
password = ''
database = 'dd_db'
dd = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(username,password,host,port,database)
#注意要設定charset,不然插入中文會報錯
#獲取資料庫引擎
engine = create_engine(dd)

Base = declarative_base(engine)

#定義一個User類,資料表名為:person
class User(Base):    
    __tablename__ = 'person'#定義表名
    #表欄位按照下面的順序依次排布
    id = Column(Integer,primary_key=True)
    name = Column(String(64),index=True)
    email = Column(String(100))
    age = Column(Integer)

#建立資料表,如果已經存在則忽略
Base.metadata.create_all()

#獲取資料庫連線,提供給外部使用
conn = engine.connect()

'''
資料操作:
1、新增/更新資料
2、查詢資料
3、刪除資料
'''

#建立與資料庫的會話session,這裡返回的是一個類class,不是例項
Session = sessionmaker(bind=engine)#繫結engine
session = Session()#初始化session例項

#1、新增/更新資料
def addUser(user):
#    Session = sessionmaker(bind=engine)#繫結engine
 #   session = Session()#初始化session例項
    result = session.query(User).filter(User.name==user.name).first()
    if result is not None:
        #說明已經存在了,就更新它
        user.id = result.id
        session.merge(user)#沒有id的話,寫入不了,會丟擲異常
        print('已經存在物件,更新資料')
    else:
        session.add(user)#如果已經存在的話,也是寫入不了,會丟擲異常
        #新增資料是不需要id,也行,但是merge一定要
    session.commit()#提交,儲存到資料庫中,不寫這句話,就不會儲存到資料庫的
    session.close()
        
def delUser(name):
    result = session.query(User).filter(User.name==name).first()
    if result is not None:
        session.delete(result)
        session.commit()
        session.close()

使用

# -*- coding: utf-8 -*-
from userdatabase import User
from userdatabase import addUser,delUser

#user = User(name='王老五',email = '789@qq.com',age = 25)
user = User(name = '阿玉',email = 'ayu@qq.com',age = 26)

print(user.id)
print(user.name)

addUser(user)

delUser('王老五')

user = User(name='愛心',email = 'aixin@qq.com',age = 25)

addUser(user)

學習了兩個晚上,弄懂了資料的新增與刪除。

相關文章