因此,我正在构建一个应用程序,并尝试将新的更改保存到数据库中,但当我尝试使用db.session.commit()
提交flask中的更改时,它将返回以下错误:
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'products.country_id' could not find table 'countries' with which to generate a foreign key to target column 'id'
在models.py中,我有以下内容:
from app import db
from . import db
from datetime import datetime
def now():
return datetime.now()
class Countries(db.Model):
__tablename__ = 'countries'
__table_args__ = {'schema': 'products_data'}
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
name = db.Column(db.String(255))
code = db.Column(db.String(45))
def __repr__(self):
return f'Id {self.id}'
class Categories(db.Model):
__tablename__ = 'categories'
__table_args__ = {'schema': 'products_data'}
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
name = db.Column(db.String(255))
def __repr__(self):
return f'Id {self.id}'
class Brands(db.Model):
__tablename__ = 'brands'
__table_args__ = {'schema': 'products_data'}
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
name = db.Column(db.String(255))
logo = db.Column(db.String(5000))
feed = db.Column(db.String(5000))
feed_type = db.Column(db.String(45))
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
country_id = db.Column(db.Integer, db.ForeignKey('countries.id'))
awinmid = db.Column(db.Integer)
def __repr__(self):
return f'Id {self.id}'
class Products(db.Model):
__tablename__ = 'products'
__table_args__ = {'schema': 'products_data'}
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
name = db.Column(db.String(255))
url = db.Column(db.Text)
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
country_id = db.Column(db.Integer, db.ForeignKey('countries.id'))
price = db.Column(db.Float)
currency = db.Column(db.String(45))
discount_price = db.Column(db.Float)
shipping = db.Column(db.Float)
brand_id = db.Column(db.Integer, db.ForeignKey('brands.id'))
当将产品中的列与外键关联时,我是否做错了什么? 这是我第一次遇到这个错误,所以我现在真的不知道该怎么做了。
首先,我没有看到任何categories
表。 其次,将粘贴的模式从products
表复制到country
表中。
ps:默认情况下,sqlalchemy为表提供类的名称(大小写)。 所以您的__tablename__='products'
实际上什么也不做。
编辑:
代码的问题在于如何设置__table_args__
属性。 你给它分配了一个对象,根据他们的规范,这是错误的。
请看下面的示例,并相应地修改您的代码
__table_args__ = ({'schema': 'products_data'})
为了进一步参考,请查看https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/table_config.html
当我试图运行angular2-express应用程序“NPM运行开发”时,我得到了“找不到名称‘promise’错误” 以下是几个文件的内容 package.json json
我更新了我的尝试,将一些内容保留为CHAR,但仍然得到一个类似的错误:第1行错误:ORA-02091:事务回滚ORA-02291:违反完整性约束(MMM1339.ITEMNO_PHAR_FK)-未找到父密钥 需求的外键都在不同的供应主键中有值,所以我不确定为什么仍然存在问题。
问题内容: 我尝试从Java bin目录执行keytool,但收到警告bash提示错误:keytool:命令未找到。 问题答案: 这些是解决我的问题的步骤: 搜索我的Java的安装路径 移至Java目录(我的服务器上安装了jre的目录) 使用keytool命令创建SSL证书
我有一个烧瓶应用程序,与MySQL使用sqlalChemy连接。DB查询时发生奇怪的错误。 `回溯(最近一次调用):文件“/home/Desktop/work/nesting app/env/lib/python3.8/site packages/sqlalchemy/util/_collections.py”,第1008行,调用返回self。注册表[key]键错误: 在处理上述异常期间,发生了另
问题内容: 我将RDD [myClass]转换为数据框,然后将其注册为SQL表 该表是可调用的,可以用以下命令演示 但是下一步给出了错误,说表未找到:my_rdd Spark的新手。 不明白为什么会这样。有人可以帮我吗? 问题答案: 确保从相同的SQLContext导入hidden._。临时表在一个特定的SQLContext中保留在内存中。
我将RDD[myClass]转换为dataframe,然后将其注册为SQL表 此表是可调用的,可以使用以下命令演示 对Spark来说是个新手。不明白为什么会这样。有谁能帮我摆脱这一切吗?
我不能安装任何需要的包。错误消息如下所示 我还尝试了包,得到了完全相同的结果。 路径: Make:GNU Make 3.81安装在中(来自官方的Debian包) 分册:Debian 6.0.8 ARCH:AMD64 构建-基本包:已安装 节点:从源手工构建 安装非GYP软件包:正常工作
问题内容: 我有一个用户表和一个朋友表。朋友表拥有两个外键,分别指向我的用户表和状态字段。我试图能够从Friend对象上的User表中调用属性。例如,我希望能够执行诸如friend.name或friend.email之类的操作。 当我得到对象时,我所拥有的只是2,并且我想显示每个用户的所有属性,以便可以在表单等中使用该信息。我对sqlalchemy还是陌生的- 仍在尝试学习更高级的功能。这只是一个