- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试为我的模型创建表,这些表是在我的应用程序的单独模块中定义的。我调用 db.create_all()
,但没有创建任何表,也没有任何错误。我已经定义了模型和 imported them before calling create_all
.为什么这行不通?
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://postgres:123@localhost/flask'
db = SQLAlchemy(app)
from models import User
db.create_all()
db.session.commit()
models.py
:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
__tablename__ = 'users'
uid = db.Column(db.Integer, primary_key = True)
最佳答案
您创建了两个单独的数据库实例,一个与应用程序一起创建,一个与模型一起创建。每个实例都有自己的元数据,用于存储在其上定义的表。您用来发出 create table 语句的那个不是定义模型的那个。您应该只使用一个扩展实例,在需要时导入它。
myapp/__init__.py
:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
# import the models *after* the db object is defined
from myapp import models
myapp/models.py
:
from myapp import db
class User(db.Model):
...
create_tables.py
:
from myapp import app, db
with app.app_context():
db.create_all()
其他注意事项:
flask.ext
已弃用,直接从其包名导入扩展。__tablename__
,你不需要自己定义。create_all
之后调用 commit
。关于python - db.create_all() 不创建在单独文件中定义的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065926/
我检查了文档,但奇怪的是它并没有说明太多。 如果我调用 db.create_all(),是否需要检查数据库是否已经存在,以免被覆盖? 最佳答案 方法only creates tables ;所以由您来
我有以下应用程序结构: run.py |->app |->models |-> user.py (declares role-to-user relationship table a
我开始学习如何在我的代码中使用 SQLAlchemy,但由于某种原因,当我运行代码时它引发了此异常: Traceback (most recent call last): File "C:/Use
我开始学习如何在我的代码中使用 SQLAlchemy,但由于某种原因,当我运行代码时它引发了此异常: Traceback (most recent call last): File "C:/Use
我正在尝试了解如何设置调用 create_all 的独立脚本,而无需将我的所有模型导入其中。以下是相关文件: db.py from flask_sqlalchemy import SQLAlchemy
我正在尝试为我的模型创建表,这些表是在我的应用程序的单独模块中定义的。我调用 db.create_all(),但没有创建任何表,也没有任何错误。我已经定义了模型和 imported them befo
我正在尝试集成 PostgreSQL 和 SQLAlchemy,但 SQLAlchemy.create_all() 没有从我的模型创建任何表。 我的代码: from flask import Flas
根据 THIS对于某些 DBMS 的问题,可以回滚 CREATE TABLE 语句。 特别是 sqlite 是可能的(尽管它没有记录)。 所以我的问题是,是否可以在 sqlalchemy 中回滚 cr
我目前正在关注this pattern以避免循环进口。这种模式似乎相当小众,因此很难通过谷歌搜索找到解决方案。 模型.py from sqlalchemy.orm import relationshi
我正在遵循此页面中的教程: https://pythonhosted.org/Flask-SQLAlchemy/quickstart.html 我相信我是逐行完成的。但是每次尝试 db.create_
我正在使用 SQLAlchemy 0.4.8 和 Postgres 来管理我的数据存储。到目前为止,自动部署我的数据库相当容易:我使用的是 metadata.create_all(bind=engin
Flask-SQLAlchemy 的 db.create_all() 方法创建与我定义的模型相对应的每个表。我从不实例化或注册模型的实例。它们只是继承自 db.Model 的类定义。它怎么知道我定义了
我对数据库和 SQLalchemy/sqlite3 的背景知识知之甚少,但我对这些的实验告诉我,create_all() 几乎可以像“如果数据库已经存在则初始化数据库”一样使用。 这是我写的 flas
我正在尝试从数据库中获取记录,但我得到了 OperationalError: (sqlite3.OperationalError) no such table: driver 即使我定义了模型并调用了
我正在学习 CS50 的 Web Programming with Python and Javascript,在 Lecture4 中,我在尝试创建 postgresql 数据库表时遇到以下错误:
当我尝试运行 db.create_all() 来创建 MySQL 表时,出现以下错误: sqlalchemy.exc.InternalError: (pymysql.err.InternalError
上下文: python 3.6 flask flask_restful flask _sqlalchemy 目标:在第一次请求 flask restful api 之前创建数据库表,避免模型之间的循环
我想记录在调用 create_all() 时 SQLAlchemy 是否必须创建任何数据库表,但是我没有看到任何有关 create_all() 返回值的文档。我该怎么办? 我尝试使用以下代码设置一个简
我似乎不明白为什么我对 db.create_all() 的调用不起作用。 我有一个带有以下初始化的应用程序包: from flask import Flask from config import c
我有一个使用 Flask-SQLAlchemy 的 Flask 应用程序。在我的单元测试中,我初始化了应用程序和数据库,然后调用 db.create_all() 并且出于某种原因它看起来没有选择我的任
我是一名优秀的程序员,十分优秀!