您的位置:首页 > 科技 > 能源 > 长沙营销型_天眼查企业信息查询平台_网络营销是什么意思_全免费建立自己的网站

长沙营销型_天眼查企业信息查询平台_网络营销是什么意思_全免费建立自己的网站

2025/4/18 22:58:05 来源:https://blog.csdn.net/xiaoming0018/article/details/147202528  浏览:    关键词:长沙营销型_天眼查企业信息查询平台_网络营销是什么意思_全免费建立自己的网站
长沙营销型_天眼查企业信息查询平台_网络营销是什么意思_全免费建立自己的网站

创建数据库连接

SQLAlchemy连接到数据库,我们需要创建一个Engine对象。

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String# 创建基类
Base = declarative_base()# 定义模型
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String)age = Column(Integer)# 创建数据库引擎和会话
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

查询语句

# 查询查询所有用户数据
session.query(User).all() ==> [user1,user2]查询有多少个用户
session.query(User).count()查询第1个用户
session.query(User).first()查询id为4的用户[3种方式]
session.query(User).get(4) (这里面只能是数字 或 ‘4’) 查询不到不会报错
session.query(User).filter_by(id = 4).first() (一个等号)查询不到不会报错
session.query(User).filter(User.id == 4).first()  查询不到不会报错filter方法实现的:
1. equals : ==news= session.query(News).filter(News.title == "title1").first()query里面是列查询,字段,传入模型名表示全字段 。filter是行查询,没有filter表示全表查询
2. not equals  :  !=query(User).filter(User.name != 'ed')3. like[不区分大小写]  & ilike[区分大小写]:query(User).filter(User.name.like('%ed%··')) query(User).filter(User.name.like('__ed%__')) _表示站位符4. in:query(User).filter(User.name.in_(['ed','wendy','jack']))5. not in:query(User).filter(~User.name.in_(['ed','wendy','jack']))6.  is null:query(User).filter(User.name==None)# 或者是query(User).filter(User.name.is_(None))7. is not null:query(User).filter(User.name != None)# 或者是query(User).filter(User.name.isnot(None))8. and:query(User).filter(and_(User.name=='ed',User.fullname=='Ed Jones'))# 或者是传递多个参数query(User).filter(User.name=='ed',User.fullname=='Ed Jones')# 或者是通过多次filter操作query(User).filter(User.name=='ed').filter(User.fullname=='Ed Jones')
9. or:query(User).filter(or_(User.name=='ed',User.name=='wendy'))10. order_by
查询所有用户数据,并以邮箱排序
session.query(User).order_by(User.email).all()
session.query(User).order_by(User.email.desc()).all()11. 查询名字结尾字符为g的所有数据[开始/包含]
session.query(User).filter(User.name.endswith('g')).all()
session.query(User).filter(User.name.startswith('g')).all()
session.query(User).filter(User.name.contains('g')).all()每页3个,查询第2页的数据
paginate = session.query(User).paginate(page, per_page,Error_out)
paginate = session.query(User).paginate(2,3,False)
page: 哪一个页
per_page: 每页多少条数据
Error_out: False 查不到不报错paginate .pages: 共有多少页
paginate .items: 当前页数的所有对象
paginate .page: 当前页
sqlalchemy查询常见的过滤方式
filter过滤条件:
过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过如果想要查看orm底层转换的sql语句,可以在filter方法后面不要再执行任何方法直接打印就可以看到了。比如:
news = session.query(News).filter(or_(News.title=='abc',News.content=='abc'))
print(news)

增加

# 增加
user = User(name='laowang')
session.add(user)
session.commit()
# 新增多条数据
user_obj1 = User(name="bigberg", passwd="twgdh123")
user_obj2 = User(name="someone", passwd="twgdh123")
Session.add_all([user_obj1,user_obj2])
# 批量新增方式一
session.bulk_save_objects([User(username=username + str(i), password=password)for i in range(10000)]
)
session.commit()
# 批量新增方式二
session.bulk_insert_mappings(User,[dict(username="NAME INSERT " + str(i), password=password)for i in range(10000)]
)
session.commit()
# 批量新增方式三
session.execute(User.__table__.insert(),[{"username": 'Execute NAME ' + str(i), "password": password} for i in range(10000)]
)
db.session.commit()

修改

# 修改
session.query(AiQuestionSortSse).filter(AiQuestionSortSse.id.in_(id_list)).update({"ptime": datetime.now()})
session.commit()

删除

# 删除
session.query(TaskSubOriginQuestion).where(TaskSubOriginQuestion.id.in_(ids)).delete()
session.commit()

SQLAlchemy:执行原生 SQL 语句

# 方式一使用engine
# 创建 Engine 后,使用 connect() 方法获取一个连接(Connection)对象,它提供了 execute() 方法来运# 行 SQL 语句:
from sqlalchemy import textwith engine.connect() as connection:result = connection.execute(text("SELECT * FROM users WHERE id=:user_id"), {"user_id": 1})for row in result:print(row)
# 方式二使用 session
result = session.execute(text("SELECT * FROM users WHERE id=:user_id"), {"user_id": 1})
for row in result:print(row)session.close()# 更新和插入
session.execute(text("UPDATE users SET name=:name WHERE id=:user_id"), {"name": "Alice", "user_id": 1})
session.commit()
session.execute(text("DELETE FROM users WHERE id=:user_id"), {"user_id": 1})
session.commit()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com