• 在flask中使用SQLAlchemy连接sqllite数据库


    设置数据库路径非常重要:

    方法:

    1 配置数据库

    basedir= os.path.abspath(os.path.dirname(__file__))  #获取当前文件的绝对路径
    
    app = Flask(__name__)

    # 拼接数据库的URL路径

    #  os.path.join 把basedir和data.sqlite的路径拼接起来#
    # data.sqlite为数据库文件,若该文件夹下没有这个文件会自动创建
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+ os.path.join(basedir,'data.sqlite')

    # 配置这个键之后,每次请求结束之后都会提交数据库的变动

    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] =True
    db = SQLAlchemy(app)

    2 定义模型

    # 定义模型

     1 # db.Model是一个基类
     2 class Role(db.Model):
     3     # 对应的数据库表明
     4     __tablename__ ='roles'
     5     # 设置字段格式
     6     id = db.Column(db.Integer,primary_key=True)
     7     name = db.Column(db.String(64),unique=True)
     8     # 创建与其他表的关系
     9     users = db.relationship('User',backref='role',lazy='dynamic')
    10 
    11     def  __repr__(self):
    12         return ''%self.name
    13 
    14     class User(db.Model):
    15         __tablename__ ='users'
    16         id = db.Column(db.Integer,primary_key=True)
    17         username= db.Column(db.String(64),unique=True,index=True)
    18         role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
    19 
    20     def __repr__(self):
    21         return''%self.username

    3 操作数据库

    db.create_all()

    总结:

    1 调试代码遇到问题,要先把代码本身什么意思搞清楚,再想解决办法

    在调试数据库连接时遇到:

    sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

    网上说可能是路径不对,我就开始修改

    'sqlite:///'

    这部分的内容,添加各种路径,然而却没有注意到这部分的内容

    os.path.join(basedir,'data.sqlite')

    这部分就是文件的路径了,我在 'sqlite:///'怎么加路径都不可能正确啊,吸取这次教训

    2 遇到问题多看官方的api文档,基本的问题上面都有说明,在网上看的答案不一定适合现在的版本

    3 在设置路径时,路径中不能有空格符,有空格的符的话也会报错



    作者:思考者01
    链接:https://www.jianshu.com/p/61bcd016bc6b
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 相关阅读:
    MySQL-percona安装
    Oracle-19C PSU升级
    Oracle-内存管理机制
    学习进度第十二周
    十天冲刺10
    单词统计续
    十天冲刺9
    学习进度第十一周
    十天冲刺8
    十天冲刺7
  • 原文地址:https://www.cnblogs.com/andy-0212/p/10061691.html
Copyright © 2020-2023  润新知