首页 > Flasky中使用db.create_all()创建不出date-dev.sqlite

Flasky中使用db.create_all()创建不出date-dev.sqlite

在学习《Flask Web开发》一书,学到第八章试图进行测试登陆那一节时才发现,没在第七章按照书上的提示创建date-dev.sqlite。

先试了书上的
(venv) $ python manage.py db upgrade
文件夹里没出现date-dev.sqlite

又把原来的date.sqlite和migration文件夹下versions文件夹里的数据删了,重试了以上命令还是没反应。

以上状态没变,在manage.py shell里试了一下命令db.create_all(),依然没出现date-dev.sqlite文件,命令行里如下显示:
>>> db.create_all()
>>>db
<SQLAlchemy engin='sqlite://>

后来把书上的代码下载来测试了一下,输入(venv) $ python manage.py db upgrade后会生成date-dev.sqlite。
在manage.py shell 里使用db命令会得到date-dev.sqlite具体的URI路径。

config.py注释是我自己写的大家无视就好

#coding:utf-8
import os
basedir = os.path.abspath(os.path.dirname(__file__)) #获取文件绝对路径

class Config:
    #配置类的基类,没有直接或间接地子类化一个对象,即定义的是经典类,config 实际上继承于字典,并且可以像修改字典一样修改它,来自于flask框架
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
    #密匙,定义成环境设定或者使用此默认值‘hard to guess string’
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True#每次request自动提交db.session.commit()
    MAIL_SERVER = 'smtp.163.com'
    #电子邮件服务器的主机名或IP地址
    MAIL_PORT = 25
    #电子邮件服务器的端口
    MAIL_USE_TLS = True
    #启用传输层安全协议Transport Layer Security,网易推荐SSL
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    #从环境获取的邮件账户和密码
    FLASKY_MAIL_SUBJECT_PREFIX = '[Flask]'
    #邮件主题的前缀
    FLASKY_MAIL_SENDER = 'b1a2b3c4d@163.com'
    #此变量在email.py里被send_email调用
    FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')
    #send_email的两个程序特定配置项分别定义邮件主题的前缀和发件人的地址
    @staticmethod
    def init_app(app):
    #名叫init_app的类方法执行对当前配置的初始化,参数为程序实例app现在方法为空
        pass
        
class DevelopmentConfig(Config):
    DEBUG = True   
    SQLALCHEMY_DATABASSE_URI = os.environ.get('DEV_DATABASE_URL') or \
    'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASSE_URI = os.environ.get('TEST_DATABASE_URL') or \
    'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
    
class ProductionCofig(Config):
    SQLALCHEMY_DATABASSE_URI = os.environ.get('DATABASE_URL') or \
    'sqlite:///' + os.path.join(basedir, 'data.sqlte')
    #以上分别定义了三种配置环境下的数据库
    
config = {
    'development': DevelopmentConfig, 
    'testing': TestingConfig,
    'production': ProductionCofig,
    'default': DevelopmentConfig    }
    #注册了不同的配置环境,语法上不太明白是怎么回事

我该怎么办呢?新手上路求老司机给指指道~


也摸不到什么头脑,不过这2个地方看一下吧
第一个是app/__init__.py

第二个是manage.py里面

【热门文章】
【热门文章】