机器学习 第一章 Python复习(10)数据入库 ORM框架sqlalchemy

参考文档

1 基本使用套路

1.1 创建连接对象

参考文档

from sqlalchemy import create_engine
engine = create_engine('mysql://root:123123@localhost/test?charset=utf8')
engine = create_engine('mysql+pymysql://root:123456@localhost/test',connect_args={"encoding": "utf8"})

1.2 直接执行SQL

result = engine.execute('select * from jt_news')
res = result.fetchall()
print(res)

1.3 创建映射

# 字段类型
from sqlalchemy import Column,Integer,String,DateTime
# 继承基础类
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
# 定义映射类
class News(Base):
	 # 表名变量,需要与数据库中的表名保持一致
     __tablename__="news"
     # 定义字段映射 
     news_id=Column(Integer,primary_key=True,autoincrement=True)
     news_title=Column(String(50),nullable=False)
     news_abstract=Column(TEXT)
     news_updatetime=Column(TIMESTAMP)
     news_clicknum=Column(Integer,default=0)

1.4 创建会话

1.4.1 会话(session)定义

连接:物理概念,创建好连接表示线路接通
会话:在连接之上,表示客户端与数据之间的交互,一个连接上可以有多个会话,也可以没有,多个会话之间互不影响。

1.4.2 创建会话

from sqlalchemy.orm import sessionmaker
#创建一个Session对象
Session=sessionmaker(bind=engine) 
#实例化
session=Session() 

1.4.3 查询

# 查询news表中所有结果
result=session.query(News).all()
print(result)
# 待过滤条件查询
result=session.query(News).filter_by(news_id=2).limit(5).offset(0).all()
# 也可以写成
result=session.query(News).filter(News.news_id==2).first()
# 排序
result=session.query(News).order_by(News.news_id).all()
# 倒排序
result=session.query(News).order_by(desc(News.news_id)).all()
# 自定义过滤条件
session.query(News).filter(text("news_id=:id and news_class=:newsclass"))\
    .params(id=2,newsclass="编程语言").order_by(desc(News.news_id)).all()

1.4.4 新增数据

news=News(news_title='测试新闻')
session.add(news)
session.commit()

1.4.4 修改数据

session.query(News).filter(News.news_id==21).update({"news_title":"222"})
session.commit()

你可能感兴趣的:(python学习)