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)
学习了两个晚上,弄懂了数据的添加与删除。