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

Posted andy_0212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。






以上是关于在flask中使用SQLAlchemy连接sqllite数据库的主要内容,如果未能解决你的问题,请参考以下文章

Flask 和 SQLAlchemy 在 PostgreSQL 的事务连接中导致大量 IDLE

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

SQLAlchemy基本使用(Flask中)

使用 pymssql 的 Python/Flask/sqlAlchemy 环境中的 Adaptive Server 连接失败错误

Flask-SQLAlchemy:在回滚无效事务之前无法重新连接

深入浅出Flask(52):flask_sqlalchemy的同时连接多个数据库