zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    node版本切换工具n的使用介绍
    nrm -- npm镜像源管理
    npm vs npx
    Dnsmasq MacOS使用介绍
    Java动态生成类以及动态添加属性
    mysql表名忽略大小写问题记录
    psotgresql之大小写
    java 按字节读写二进制文件(Base64编码解码)
    java解析复杂json:JSONObject 和 JSONArray的使用
    URL编码:怎样读取特殊字符
  • 原文地址:https://www.cnblogs.com/yelao/p/11003161.html
Copyright © 2011-2022 走看看