sqlalchemy简单的连接示例

Posted 上官飞鸿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlalchemy简单的连接示例相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-
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

engine = create_engine(mysql+mysqlconnector://plan:[email protected]/plan)

Base = declarative_base()  # 生成orm基类


class User(Base):  #进行映射,创建表结构,models ,三项,id name password
    __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 ,注意,这里返回给session的是个class,不是实例
Session = Session_class()  # 生成session实例
# Session.close()#关闭连接 这个放最后


# 插入开始
print(插入开始)
user_obj = User(name="jack", password="jack")  # 生成你要创建的数据对象
print(user_obj.name, user_obj.id)  # 此时还没创建对象呢,不信你打印一下id发现还是None

Session.add(user_obj)  # 把要创建的数据对象添加到这个session里, 一会统一创建
print(user_obj.name, user_obj.id)  # 此时也依然还没创建

Session.commit()  # 现此才统一提交,创建数据
print(提交数据)
print(user_obj.name, user_obj.id)  # 提交过,就会放在数据库里了。
# 插入结束
print(插入结束)

# 查询开始
print(查询开始)
my_user = Session.query(User).filter_by(name="jack").first()  # 查找name=jack的
print(my_user)  # 这查出来是个对象
print(my_user.id, my_user.name, my_user.password)
# 查询结束
print(查询结束)

# 删除开始
print(删除开始)
# 先插入一个,可以删的。
user_obj = User(name="rose", password="jack")
Session.add(user_obj)
Session.commit()
# 查找到需要删的对象
del_user = Session.query(User).filter_by(name="rose").first()
print(del_user.name)
Session.delete(del_user)  # 删除命令
Session.commit()  # 提交删除
find_user = Session.query(User).all()#查询表的全部内容
for i in find_user:
    print(i.id, i.name)
# 删除结束


# 修改开始
print(修改开始)
my_user = Session.query(User).filter_by(name="jack").first()  # 找到第一条名字是jack的,生成对象。
my_user.name = "jackadam"  # 给对象变量命名
temp_id = my_user.id  # 把这个对象的ID,赋值给临时变量temp_id
Session.commit()  # 提交修改
my_user2 = Session.query(User).filter_by(id=temp_id).first()  # 根据临时变量id,重新查询一下名字是否修改。
print(my_user2.name)
# 修改结束
print(修改结束)
# 多条件查询
objs = Session.query(User).filter(User.id > 0).filter(User.id < 7).all()
# 多条件查询

# 统计
print(统计)
count_num = Session.query(User).filter(User.name.like("ja%")).count()
print(count_num)

# 统计

# 分组
print(分组)
from sqlalchemy import func

print(Session.query(func.count(User.name), User.name).group_by(User.name).all())
# 分组
Session.close()#最后不忘close

‘‘‘
orady_by
desc  升序
asc   降序
‘‘‘

注释很详细了,不写了

以上是关于sqlalchemy简单的连接示例的主要内容,如果未能解决你的问题,请参考以下文章

`sum`、`average`、`min`、`max` 的 sqlalchemy 简单示例

将 postgresql 与 sqlalchemy 连接起来

如何在sqlalchemy中选择多列连接的特定列?

处理屏幕旋转上的片段重复(带有示例代码)

为啥这段代码会泄露? (简单的代码片段)

SQLAlchemy在事务中空闲