zoukankan      html  css  js  c++  java
  • mysqlalchmy操作之建表

    1 创建链接基础类。

    # -*- coding=utf-8 -*-
    import os
    from sqlalchemy import (create_engine,MetaData)
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    from config.config import db_args
    
    def get_engine_():
        args=db_args()
        password = os.getenv('DB_PASS', args['passwd'])
        charset = os.getenv('CharSet', args['charset'])
        connect_str= "{}+pymysql://{}:{}@{}:{}/{}?charset={}".format(args['db_type'], args['user'], password,args['host'], args['port'], args['db'],charset)
        engine=create_engine(connect_str)
        return engine
    eng=get_engine_()
    Base=declarative_base()#生成一个SqlORM 基类
    Session=sessionmaker(bind=eng)#bind绑定,创建与数据库的会话session class
    db_session=Session()
    metadata=MetaData(get_engine_()) #
    
    __all__ = ['eng', 'Base', 'db_session', 'metadata']  #它是一个string元素组成的list变量
    

      2.设计需要的表的字段

    # -*- coding=utf-8 -*-
    from sqlalchemy import (
        Table, Column, INTEGER, String, Text,DateTime)
    from .basic import metadata
    import datetime
    #user_info
    user_info=Table("user_info",metadata,
                    Column("id",INTEGER,primary_key=True,autoincrement=True),
                    Column("login_id",String(200)),
                    Column("login_pwd",String(200)),
                    Column("user_name",String(200)),
                    Column("domain_id",String(6), default=100505, server_default='100505'),
                    Column("user_id",String(200)),
                    Column("enable",String(2),default=1,server_default='1'),
                    Column("need_comment", String(2), default=1, server_default='1'),
                    Column("need_days", String(20), default=30, server_default='30'),
                    Column("update_time",DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("create_user",String(200)),
        )
    
    #home_info
    home_info=Table("home_info",metadata,
                    Column("id",INTEGER,primary_key=True,autoincrement=True),
                    Column("user_id",String(200)),
                    Column("user_name", String(200)),
                    Column("follows_num",String(200),default=0, server_default='0'),
                    Column("fans_num",String(200),default=0, server_default='0'),
                    Column("wb_num",String(200),default=0, server_default='0'),
                    Column("home_url", String(200)),
                    Column("update_time", DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("create_user", String(200)),
                    )
    #wb_info
    wb_info=Table("wb_info",metadata,
                    Column("id",INTEGER,primary_key=True,autoincrement=True),
                    Column("uid",String(200)),
                    Column("wb_id", String(200)),
                    Column("wb_content", String(2000)),
                    Column("read_num",String(200),default=0, server_default='0'),
                    Column("share_num",String(200),default=0, server_default='0'),
                    Column("comment_num",String(200),default=0, server_default='0'),
                    Column("like_num", String(200),default=0, server_default='0'),
                    Column("wb_url", String(200)),
                    Column("wb_time", DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("wb_device", String(200)),
                    Column("update_time", DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("create_user", String(200)),
                    )
    #comment_info
    
    comment_info=Table("comment_info",metadata,
                    Column("id",INTEGER,primary_key=True,autoincrement=True),
                    Column("wb_Id",String(200),index=True),
                    Column("comment_user",String(200)),
                    Column("comment_time",DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("comment_content",String(2000)),
                    Column("comment_id", String(200)),
                    Column("ico_url", String(200)),
                    Column("update_time", DateTime, default=datetime.datetime.utcnow,index=True),
                    Column("create_user", String(200)),
                    )
    
    __all__ = ['user_info', 'home_info', 'wb_info', 'comment_info']
    

      3.映射到实体

    # -*- coding=utf-8 -*-
    from dbs.basic import Base
    from dbs.tables import *
    #user_info
    #home_info
    #wb_info
    #comment_info
    
    class LoginInfo(Base):
        __table__=user_info
    
    class HomeoData(Base):
        __table__=home_info
    
    class WeiBoData(Base):
        __table__=wb_info
    
    class CommentInfo(Base):
        __table__=comment_info
    

      4.创建表

    # -*- coding=utf-8 -*-
    from dbs.tables import *
    from dbs.basic import metadata ,eng
    
    
    def create_all_table():
        # 创建数据表,如果数据表存在,则忽视
        metadata.create_all()
    
    if __name__ == "__main__":
        try:
            create_all_table()
            print("create table successful.")
        except:
            print("create table failed !!!")
    

      

  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/c-x-a/p/8507857.html
Copyright © 2011-2022 走看看