pythonのsqlalchemy簡單查詢


#!/usr/bin/env python
import sqlalchemy
from sqlalchemy import create_engine
from  sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
from sqlalchemy.orm import sessionmaker

# 創建連接 echo=True 就會打印出所有過程信息
engine = create_engine("mysql+pymysql://root:root@localhost/testuser",encoding="utf-8",echo=True)

#
Base = declarative_base() # 生成orm基類

class User(Base):
    __tablename__= "user"
    id = Column(Integer,primary_key=True)
    name = Column(String(32))
    password = Column(String(64))


Base.metadata.create_all(engine) # 創建表結構

Session_class = sessionmaker(bind=engine) # 創建與數據庫的會話session class 注意,這里返回的是一個class,不是實例

session = Session_class()
#
# user_obj = User(name="zhangpeng",password="123") # 生成你要創建的數據對象
# print(user_obj.name,user_obj.id) # 此時還沒有創建對象,ID為None
#
# session.add(user_obj)
# print(user_obj.name,user_obj.id) # 此時依然為空
# session.commit() # 統一提交

# filter_by(name="zhangpeng") 條件; all  全部  first 第一個
# filter(User.id>2) ;按照ID查詢
# data = session.query(User).filter_by(name="zhangsan").all()

# -- 修改
data = session.query(User).filter_by(name="aaa").first()
if(data is not None):
    data.name = "zhangsan"

session.commit() # 提交
# -- 修改

# -- 回滾
my_user = session.query(User).filter_by(id=1).first()
my_user.name = "Jack"
fake_user = User(name="Rain",password="123456")
session.add(fake_user)
# 這時候看session里有你剛添加的數據
print("....",session.query(User).filter(User.name.in_(["jack","rain"])).all())

session.rollback() # 此時回滾一下,之前數據應該就消失了
print(session.query(User).filter(User.name.in_(["jack","rain"])).all())

# -- 回滾


# 獲取所有數據
print(session.query(User.name,User.id).all())


# 多條件查詢
objs = session.query(User).filter(User.id>0).filter(User.id<7).all()
# 查詢出來是一個數組
print(objs[0].name)

# 模糊查詢,並統計個數
count = session.query(User).filter(User.name.like("%y%")).count()
print(count)

# 分組查詢
from sqlalchemy import func
print(session.query(func.count(User.name),User.name).group_by(User.name).all())

# 刪除
del_user = session.query(User).filter(User.id==1).first()
session.delete(del_user)
session.commit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM