zoukankan      html  css  js  c++  java
  • SqlAlchemy初探

    SqlAlchemy是Python下的一个成熟的ORM框架。下面我们对他的使用做一个简略的介绍。

    0.安装

    如果有pip,使用pip安装,更便捷。pip install sqlalchemy

    也可以下载包安装。python setup.py install

    1.连接配置

    1 >>> from sqlalchemy import create_engine
    2 >>> engine = create_engine('sqlite:///:memory:', echo=True)
    3 MySql的连库字符串:mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>] 

    2.模型配置

     1 >>> from sqlalchemy.ext.declarative import declarative_base
     2 >>> Base = declarative_base()
     3 >>> from sqlalchemy import Column, Integer, String
     4 >>> class User(Base):
     5 ...     __tablename__ = 'users'
     6 ...
     7 ...     id = Column(Integer, primary_key=True)
     8 ...     name = Column(String)
     9 ...     fullname = Column(String)
    10 ...     password = Column(String)
    11 ...
    12 ...     def __repr__(self):
    13 ...        return "<User(name='%s', fullname='%s', password='%s')>" % (
    14 ...                             self.name, self.fullname, self.password)
    15 
    17 创建一个模型的实例:
    18 >>> ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
    19 >>> ed_user.name
    20 'ed'
    21 >>> ed_user.password
    22 'edspassword'
    23 >>> str(ed_user.id)
    24 'None' 

    3.数据查询

    1 >>> from sqlalchemy.orm import sessionmaker
    2 #两种建立session的方法:
    3 >>> Session = sessionmaker(bind=engine)
    4 #或者
    5 >>> Session = sessionmaker()
    6 >>> Session.configure(bind=engine)  # once engine is available

      3.1 普通查询

     1 >>>session.query(user_alias, user_alias.name).all()/one()/first()
     2 >>>session.query(user_alias, user_alias.name).filter(User.fullname=='Ed Jones').filter(User.age [>,<,==,>=,<==]25).all()
     3 >>>query.filter(User.name == 'ed')
     4 >>>query.filter(User.name != 'ed')
     5 >>>query.filter(User.name.like('%ed%'))
     6 >>>query.filter(User.name.in_(['ed', 'wendy', 'jack']))
     7 >>>query.filter(~User.name.in_(['ed', 'wendy', 'jack']))
     8 >>>query.filter(User.name == None)
     9 >>>query.filter(User.name.is_(None))
    10 >>>query.filter(User.name != None)
    11 >>>query.filter(User.name.isnot(None))
    12 >>>from sqlalchemy import and_
    13 >>>query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))
    14 >>>query.filter(User.name == 'ed', User.fullname == 'Ed Jones')
    15 >>>query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones')
    16 >>>from sqlalchemy import or_
    17 >>>query.filter(or_(User.name == 'ed', User.name == 'wendy'))
    18 >>>query.filter(User.name.match('wendy'))

       3.2关联查询

        用到时候再补上。

    4.更改提交

  • 相关阅读:
    C# Linq Enumerable 技巧
    Winform 踩坑
    BootStrap Table
    java8+junit5实现并发测试(多线程)
    Junit5+REST-assured 做接口测试
    log4j的使用
    ASP.NET项目启用SSL
    hyper-v虚拟机内存占用过高
    C#使用qq邮箱的smtp服务发邮件
    CALayer设置圆角
  • 原文地址:https://www.cnblogs.com/cncyber/p/4461794.html
Copyright © 2011-2022 走看看