mysqlalchmy操作之建表

2022-02-22 03:56:05 字數 4693 閱讀 8631

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

MySQL簡單建庫建表操作

create database selecttest character set utf8 use selecttest 1.學生表 student create table student sno varchar 20 primary key,sname varchar 20 not null,s...

MySQL 建庫建表等簡單操作

檢視已有庫 show databases show databases show databases g 新建庫的操作 create database 庫名 create database et 檢視建庫資訊 show create database 庫名 show create database ...

hive 建庫建表字段操作基礎

建庫 create database if not exists test03 建庫,並指定位置 查詢所有的資料庫 show databases 使用庫 use test03 展示所有表 show tables 顯示表結構 desc employee 顯示建立表的語句 詳細 show create ...