ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【配置sqlalchemy】配置并且迁移数据表

2022-09-13 03:00:54  阅读:320  来源: 互联网

标签:sqlalchemy Column 配置 数据表 import py True alembic


 1:目录结构

 2:配置sqlalchemy参数文件 :     config.py

# config.py

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker #数据库访问地址 SQLALCHEMY_DATABASE_URL = "sqlite:///./database/app.sqlite3" # SQL # SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db" # MYSQL #启动引擎 engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) #启动会话 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) #数据模型的基类 Base = declarative_base()

 3:添加表模型文件:     model.py

#model.py

from sqlalchemy import Boolean, Column, Integer, String, create_engine from .config import Base # 用户信息 class UserInfo(Base): __tablename__="userinfo" id = Column(Integer, primary_key=True,index=True,autoincrement=True) # autoincrement自增长 index索引 username = Column(String,unique=True,nullable=True,index=True,comment="用户名") # nullable不能为空 name = Column(String(10),unique=True,index=True) phone = Column(String,unique=True,index=True) age = Column(Integer,nullable=True,) sex = Column(Integer,nullable=True,) is_active = Column(Boolean, default=True) def __repr__(self): return self.username

 4:更新、迁移数据库

1: 终端安装alembic :     pip install alembic 

2:终端初始化alembic :    alembic init alembic 

3:将alembic.ini中的sqlalchemy.url改为你数据库地址: sqlalchemy.url = sqlite:///./database/app.sqlite3 (要与./database/config.py配置的一样)

4:找到alembic文件夹下的env.py,找到target_metadata = None
替换:   import sys   from os.path import abspath, dirname   from database.model import Base # 这里是Base是model.py模板里面的BASE   # 告诉alembic 你的表数据在哪   sys.path.append(dirname(dirname(abspath(__file__))))   target_metadata = Base.metadata

PS:到此为止配置成功!

两行迁移命令:    1:alembic revision --autogenerate -m "自定义迁移文件名"                2:alembic upgrade head

 

标签:sqlalchemy,Column,配置,数据表,import,py,True,alembic
来源: https://www.cnblogs.com/wanghong1994/p/16687895.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有