重点在函数中建 engine
在外部声明基类和模型
Base = declarative_base()
class User(Base):
__tablename__='users' # 数据库的表名
id = Column(Integer,primary_key=True,autoincrement=True) # 主键;自增(默认就是True)
name = Column(String(32),nullable=False) # 不为空
email = Column(String(32),unique=True) # 唯一
ctime = Column(DateTime,default=datetime.datetime.now) # 默认值
extra = Column(Text) # 大文本
def create_table():
engine = create_engine(
'mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8',
max_overflow=0,
pool_size=5,
pool_timeout=30,
pool_recycle=-1
)
Base.metadata.create_all(engine) # 通过engine对象创建
作者:Py应用领域
链接:https://www.zhihu.com/question/42240205/answer/2335079369
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
import datetime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,Text,ForeignKey,DateTime,UniqueConstraint,Index
from sqlalchemy import create_engine
#1.创建一个类作为所有模型类的基类
Base = declarative_base()
class User(Base):
__tablename__='users' # 数据库的表名
id = Column(Integer,primary_key=True,autoincrement=True) # 主键;自增(默认就是True)
name = Column(String(32),nullable=False) # 不为空
email = Column(String(32),unique=True) # 唯一
ctime = Column(DateTime,default=datetime.datetime.now) # 默认值
extra = Column(Text) # 大文本
#2.创建表
def create_table():
engine = create_engine(
'mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8',
max_overflow=0,
pool_size=5,
pool_timeout=30,
pool_recycle=-1
)
Base.metadata.create_all(engine) # 通过engine对象创建表,只要是继承Base的类,都会被创建出来表
#3.删除表
def drop_table():
engine = create_engine(
'mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8',
max_overflow=0,
pool_size=5,
pool_timeout=30,
pool_recycle=-1
)
Base.metadata.drop_all(engine) # 通过engine对象删除表,只要是Base管理的表,都会被删除
if __name__ == '__main__':
# create_table()
drop_table()
#存在问题:sqlachemy不支持创建数据库和修改表字段