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 !!!")

  

posted @ 2018-03-05 10:59  公众号python学习开发  阅读(414)  评论(0编辑  收藏  举报