笔记03:sqlalchemy增删改查

2018-03-30  本文已影响0人  东岳哥哥

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)

学习了两个晚上,弄懂了数据的添加与删除。

上一篇下一篇

猜你喜欢

热点阅读