我有这个数据库,其中包含 3 个表、饼图、人员以及两者之间的连接点。一个馅饼可以由很多人制作,一个人可以制作很多馅饼,所以这是一个非常合法的用例。
我想要输出的是一个巨大的表,格式如下:
+-------------------------------------------------------
| person_id | person_name | pies
+-------------------------------------------------------
| 1 | john | apple, banana, plum, ..
| 2 | mary | apple, plum, pineapple, ..
| ... | ... | ..., ..., ..., ...
| 10000 | josh | banana, coconut, ...
Run Code Online (Sandbox Code Playgroud)
我目前正在实现这一目标如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import random
import time
app = Flask(__name__)
db = SQLAlchemy(app)
person_to_pie_association_table = db.Table(
'person_to_pie_association_table',
db.metadata,
db.Column('pie_id', db.Integer, db.ForeignKey('pie.id')),
db.Column('person_id', db.Integer, db.ForeignKey('person.id'))
)
class Person(db.Model): …Run Code Online (Sandbox Code Playgroud) 我的数据库中有 100 行。我正在尝试执行选择查询,但我想跳过前 10 行(即我想要 11-20 范围内的行)。
我怎样才能做到这一点?
我第一次尝试 ORM,试图了解它是如何工作的,但遇到了一些挑战:
我想做的是,将 API 中的 JSON 放入 SQLAlchemy 模型中,然后将所有条目批量插入到我的数据库中。但由于某种原因,我在 SQLAlchemy 中遇到错误。
根据我对错误的理解,在某个时间点,当将数据分配给我的模型时,它被转换为字典,而我认为它应该是class objects.
我的预期结果是成功插入所有条目。有人能帮我弄清楚我可能做错了什么吗?
欣赏。*
错误
sqlalchemy.exc.ProgrammingError:
(mysql.connector.errors.ProgrammingError)
Failed processing pyformat-parameters;
Python 'dict' cannot be converted to a MySQL type
Run Code Online (Sandbox Code Playgroud)
JSON:
{
"all_orders": [
{
"id": 456215587,
"created_at": "2018-11-04T23:18:18-02:00",
"order_number": null,
},
{
"id": null,
"created_at": "2018-11-04T23:18:18-02:00",
"order_number": 1982,
}]
}
Run Code Online (Sandbox Code Playgroud)
功能
def update_orders(all_orders):
cursor = db_cursor()
session = db_session()
orders_entries = []
for orders in all_orders:
order_id = orders.get("id", {})
order_number = orders.get("order_number", {})
created_at = orders.get("created_at", …Run Code Online (Sandbox Code Playgroud) 使用flask_marshmallow进行输入验证,并使用scheme.load(),我无法捕获模型中@validates装饰器生成的错误
我捕获了资源中的结果和错误,但错误会直接发送给用户
```python
from sqlalchemy.orm import validates
from sqlalchemy import Column, ForeignKey, Integer, String, DateTime
from sqlalchemy.orm import relationship, backref
from sqlalchemy import create_engine
from sqlalchemy.sql import func
from flask_marshmallow import Marshmallow
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
from sqlalchemy.orm import joinedload
db = SQLAlchemy()
ma = Marshmallow()
class Company(db.Model):
__tablename__ = "company"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(250), nullable=False)
addressLine1 = db.Column(db.String(250), nullable=False)
addressLine2 = db.Column(db.String(250), nullable=True)
city = db.Column(db.String(250), nullable=False)
state = db.Column(db.String(250), nullable=False) …Run Code Online (Sandbox Code Playgroud) 我对此做了很多研究,包括尝试这样的答案。看来 Celery 无法访问我的 Flask 应用程序的上下文。
我完全了解我的 celery 对象,它将装饰我的任务,必须能够访问我的 Flask 应用程序的上下文。我确实相信它应该,因为我按照本指南创建了我的芹菜对象。我不确定混淆是否存在于我使用 Flask-HTTPAuth 的事实中。
这是我所拥有的一些内容。
def make_celery(app):
celery = Celery(app.import_name, backend=app.config["CELERY_RESULT_BACKEND"], broker=app.config["CELERY_BROKER_URL"])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
app = Flask(__name__)
auth = HTTPBasicAuth()
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///flask_app.db"
app.config["CELERY_BROKER_URL"] = "redis://localhost:6379"
app.config["CELERY_RESULT_BACKEND"] = "redis://localhost:6379"
celery = make_celery(app)
db = SQLAlchemy(app)
@celery.task(bind=True, name="flask_app.item_loop")
def loop(self):
items = g.user.items
for item in items: …Run Code Online (Sandbox Code Playgroud) 如何实现用户对帖子点赞功能?我遵循了其他在线用户发布的代码;但是,我收到以下错误:
AmbiguousForeignKeysError:
Could not determine join condition between parent/child tables on relationship
User.posts - there are multiple foreign key paths linking the tables. Specify
the 'foreign_keys' argument, providing a list of those columns which should be
counted as containing
Run Code Online (Sandbox Code Playgroud)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return "{}, {}, {}".format(self.username, self.email, self.image_file)
liked = db.relationship( …Run Code Online (Sandbox Code Playgroud) I\xe2\x80\x99m 使用 sqlalchemy 制作数据库,该数据库由三个类组成:User、Meeting、MeetingRoom\n我想在 Meeting 中为会议室创建外键,但由于某种原因,它给出以下错误
\n\n\n\n\nsqlalchemy.exc.NoReferencedTableError:与列“meeting.mrid”关联的外键找不到用于生成目标列“mrid”外键的表“meetingroom”
\n

当我们以相反的方式执行此操作(在会议室中添加会议外键)时,它可以工作,我\xe2\x80\x99m 不确定问题是什么\xe2\x80\x99s\n这是代码:
\n\nfrom flask import Flask, request, jsonify\nfrom flask_sqlalchemy import SQLAlchemy\nfrom flask_marshmallow import Marshmallow\nimport os\n# ==================================\napp = Flask(__name__)\nbasedir = os.path.abspath(os.path.dirname(__file__))\napp.config[\'SQLALCHEMY_DATABASE_URI\'] = \'sqlite:///db.db\'\napp.config[\'SQLALCHEMY_TRACK_MODIFICATION\'] = False\ndb = SQLAlchemy(app)\nma = Marshmallow(app)\n# ====================DATABASE\n# =============USER\nclass User (db.Model):\n id = db.Column(db.Integer,primary_key=True)\n name = db.Column(db.String(30))\n Email = db.Column(db.String(30))\n Pass = db.Column(db.String(30))\n Phone = db.Column(db.String(12))\n Department = db.Column(db.String(30))\n Major = db.Column(db.String(30))\n meeting = db.relationship(\'Meeting\', backref=\'creator\')\n meetingroom = db.relationship(\'MeetingRoom\', backref=\'reserver\')\n\n def __init__(self, name, Email, Pass, Phone, …Run Code Online (Sandbox Code Playgroud) 我正在使用 Flask 和 Angular 构建一个机器学习应用程序。我正在我的 pyhton 后端检索一个 mysql 表,我想使用 pandas dataframe 进行一些过滤方法。我通过将 Json 数组转换为 pandas 数据帧轻松完成了这部分。但是当我尝试通过将数据帧转换为 json 对象数组来返回数据帧时,它将如下所示。
from flask import request
from flask_restful import Resource
from Model import db, EmployeeTaskSummary, EmployeeTaskSummarySchema
import json
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
employee_task_summary_schemas = EmployeeTaskSummarySchema(many=True)
employee_task_summary_schema = EmployeeTaskSummarySchema()
class EmployeeTaskSummaryResource(Resource):
def get(self):
employee_task_summary = EmployeeTaskSummary.query.all()
employee_task_summary =
employee_task_summary_schemas.dump(employee_task_summary).data
df=pd.DataFrame(employee_task_summary)
return df.head(5).to_json(orient='records')
Run Code Online (Sandbox Code Playgroud)
那么输出 json Arry 将是:-
"[{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":1,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":2,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":7,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":3,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":4,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":18,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":5,\"year\":2019}]"
Run Code Online (Sandbox Code Playgroud)
我不明白输出中出现这个“\”符号。我需要这种输出。(这是随机样本) …
我正在使用带有 SQLAlchemy 的 Flask 应用程序和 uWSGI 服务器。一个已知问题是,uWSGI 在分叉期间通过所有进程重复连接。有关如何解决此问题的信息在网络上有点分散,但两个主要选项似乎是:
lazy-apps = true(不推荐,因为它消耗大量内存)@postfork装饰器在分叉后关闭连接,为每个新进程启动新的连接,但我不清楚何时以及如何在 Flask 应用程序中使用。这是我的应用程序的示例:
# file: my_app/app.py
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
app.config.from_pyfile(f'../config/settings.py')
db.init_app(app)
db.create_all(app=app)
return app
Run Code Online (Sandbox Code Playgroud)
run.py文件示例:
# file: run.py
from my_app/app import create_app
app = create_app()
if "__main__" == __name__:
app.run(debug=app.config["DEBUG"], port=5000)
Run Code Online (Sandbox Code Playgroud)
所以问题是 postfork 应该在哪里以及如何执行来正确设置 uWSGI 的服务器以在每个进程上使用隔离连接而不使用lazy-apps = true?
我有一个想要测试的网络服务。我正在 Postman 的帮助下检查它。当我必须在 JSON 中设置日期对象时,我遇到了问题。
这是我的用户类: PS:我正在使用 Flask-sqlalchemy 来创建数据库模型。
class User(db.Model):
id = db.Column('id', db.Integer, primary_key=True)
name = db.Column('name', db.String(60), nullable=True, default=None)
username = db.Column('user_name', db.String(100), nullable=False, unique=True)
dob = db.Column('date_of_birth', db.Date, nullable=True, default=None)
Run Code Online (Sandbox Code Playgroud)
这是我试图发布到“注册”路由的 JSON 数据 -http://127.0.0.1:5000/register
{
"name": "Catherin Francisco",
"username": "c_francisco",
"dob": new Date("1988-06-27")
}
Run Code Online (Sandbox Code Playgroud)
400 Bad Request: Failed to decode JSON object我在设置“dob”键值对时遇到问题。谁能帮我设置 JSON 中的日期对象。