• python sqlalchemy mysql 自动映射


    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作

    简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果

    SQLAlchemy本身无法操作数据库,其必须依赖pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作.

    以下列举了几种常用插件的数据库url格式:

    MySQL-Python
        mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
      
    pymysql
        mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
      
    MySQL-Connector
        mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
      
    cx_Oracle
        oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]

    本文使用 pymysql 插件:

    安装:

    # 安装pymysql插件
    pip install pymysql 
    
    # 安装sqlalchemy
    pip install sqlalchemy

    安装成功后即可使用:

    本实例用法为表已经存在, ORM 自动映射类

    from datetime import datetime
    from sqlalchemy.ext.automap import automap_base
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy import create_engine
    
    # 数据库连接url
    DB_CONNECT_STRING = 'mysql+pymysql://username:password@address:port/database'
    
    # 创建引擎
    engine = create_engine(DB_CONNECT_STRING, echo=True)
    
    # 自动映射
    Base = automap_base()
    Base.prepare(engine,reflect=True)
    
    # 获取所有表的映射类
    tables = Base.classes.keys()
    
    # 获取指定类user表 --> user实体类
    user = Base.classes.user
    
    # 查看user
    #print(user.__dict__)
    
    # 获取所有字段或属性
    keys = test_case.__table__.columns.keys()
    
    # 创建session
    Session = sessionmaker(bind=engine)
    session = Session()
    
    # 查表,返回实例列表
    result = session.query(test_case).all()
    
    # 按条件查表, 返回实例集合
    ret = session.query(test_case).filter_by(name='zhangsan').all()
    
    # 创建新的实例,并插入,nowtime字段为TIMESTAMP
    newUser = user(name='lisi', age=10, nowtime=datetime.now())
    session.add(newUser)
    
    # 提交
    session.commit()

    参考:

    Python操作MySQL之SQLAlchemyhttps://www.cnblogs.com/ccorz/p/5711955.html

    python操作数据库常用工具: https://foofish.net/python-mysql.html

  • 相关阅读:
    UVALive 5983 MAGRID DP
    2015暑假训练(UVALive 5983
    poj 1426 Find The Multiple (BFS)
    poj 3126 Prime Path (BFS)
    poj 2251 Dungeon Master 3维bfs(水水)
    poj 3278 catch that cow BFS(基础水)
    poj3083 Children of the Candy Corn BFS&&DFS
    BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
    洛谷P3178 [HAOI2015]树上操作(dfs序+线段树)
    洛谷P3065 [USACO12DEC]第一!First!(Trie树+拓扑排序)
  • 原文地址:https://www.cnblogs.com/yelao/p/11003161.html
Copyright © 2020-2023  润新知