zoukankan      html  css  js  c++  java
  • sqlalchemy常用操作

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    from sqlalchemy import Column, String, create_engine, Integer, MetaData, Table
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    # 创建对象的基类:
    Base = declarative_base()
    
    
    # 定义User对象:
    class User(Base):
        # 表的名字:
        __tablename__ = 'user'
    
        # 表的结构:
        id = Column(Integer(), primary_key=True)
        name = Column(String(20))
        age = Column(Integer())
    
    
    # 初始化数据库连接:
    engine = create_engine('mysql+pymysql://root:password@localhost:3306/common')
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)
    # 创建表
    Base.metadata.create_all(engine)
    
    
    def add_user(name, age):
        # 创建session对象:
        session = DBSession()
        # 创建新User对象:
        new_user = User(name=name, age=age)
        # 添加到session:
        session.add(new_user)
        # 提交即保存到数据库:
        session.commit()
        # 关闭session:
        session.close()
    
    
    def get_user(name):
        # 创建Session:
        session = DBSession()
        # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
        user = session.query(User).filter(User.name == name).one()
        # 打印类型和对象的name属性:
        print('age:', user.age)
        print('name:', user.name)
        # 关闭Session:
        session.close()
    
    
    
    ################################################操作已有数据库###########################################################################
    
    metadata = MetaData(bind=engine)
    
    
    class Province(Base):
        '''映射已有的数据库,传入三个参数:数据库名称、metadata(绑定接口)、autoload=True'''
        __table__ = Table('province', metadata, autoload=True)
    
    
    def get_pname_from_exist_database(code):
        session = DBSession()
        target = session.query(Province).filter(Province.code == code).one()
        print('code:', target.code)
        print('name:', target.pname)
        # 关闭Session:
        session.close()
    
    
    if __name__ == '__main__':
        add_user('user01',22)
        get_user('user01')
        
        #查询已有数据库
        get_pname_from_exist_database('ZJ')
    
    

    数据去重:

    CREATE TABLE table_temp AS
    SELECT * FROM table GROUP BY title, SID;
    
    DROP TABLE table;
    RENAME TABLE table_temp TO table;
    
  • 相关阅读:
    关于阿里云centos 2.6下手机表情输入后无法保存到mysql数据库的问题调研及mysql版本从5.1升级到5.7的全过程纪要
    EXTJS 5 学习笔记2
    EXTJS 5 学习笔记1
    关于java.lang.String理解中的一些难点
    关于centos7中使用rpm方式安装mysql5.7版本后无法使用root登录的问题
    大数据专栏
    过采样中用到的SMOTE算法
    linux后台执行命令:&和nohup
    P,R,F1 等性能度量(二分类、多分类)
    word2vec模型cbow与skip-gram的比较
  • 原文地址:https://www.cnblogs.com/steinven/p/14751140.html
Copyright © 2011-2022 走看看