sqlalchemy相关操作(ORM)

环境:python3.7,pycharm,mysql

ORM(Object-Relational-Mapper)

对象关系映射(ORM)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术,sqlalchemy是实现ORM技术其中一个库(框架)。

优势

  • 简化开发,因为它可以自动执行对象到表和表到对象的转换,从而降低开发和维护成本
  • 与嵌入式SQL和手写存储过程相比,代码更少
  • 应用程序层中的透明对象缓存,提高了系统性能
  • 优化的解决方案使应用程序更快,更易于维护

映射类型

sqlalchemy操作mysql数据库

1.导入
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
2.链接数据库
db = sqlalchemy.create_engine("mysql+pymysql://root:11111111@localhost/demo")
3.创建一个继承基类
base = declarative_base(db)
4.映射
class User(base):
    __tablename__ = 'student'

    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
    name = sqlalchemy.Column(sqlalchemy.String(32))
5.创建表
if __name__ == '__main__':

   base.metadata.create_all(db)
6.操作数据库
1.导入
from sqlalchemy.orm import sessionmaker

2.绑定一个查询实例
session = sessionmaker(bind=db)
session = session()

3.插入 
######插入单条数据
user =User(
    id = 4,
    name='python'
)
session.add(user)
session.commit()

######插入多条数据
session.add_all(
   [
       User(id=5,name='java'),
       User(id=6,name='php')
   ]
 )
session.commit()

4.查询
######查询多条数据
data = session.query(User).all()
for x in data:
    print (x.name)

data = session.query(User).filter(User.name== 'xxxx').all()
######查询单条数据
data = session.query(User).filter(User.name == 'xxxx').first()
data = session.query(User).filter_by(name='xxxx').first()
######使用get查询id
data = session.query(User).get(ident = 10)
print (data.name)

5.修改
data = session.query(User).get(10)
print (data)
data.name = 'laoli'
session.merge(data)
session.commit()
或者
session.query(User).filter(User.id == 10).update({User.name:"xxxxx",User.id:11})
session.commit()

6.删除
data = session.query(User).filter(User.id == 11).first()
session.delete(data)
session.commit()
posted @ 2019-08-21 19:31  达芬奇vinic  阅读(320)  评论(0编辑  收藏  举报