相关疑难解决方法(0)

将sqlalchemy行对象转换为python dict

是否有一种简单的方法来迭代列名和值对?

我的sqlalchemy版本是0.5.6

下面是我尝试使用dict(row)的示例代码,但它抛出异常,TypeError:'User'对象不可迭代

import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

print "sqlalchemy version:",sqlalchemy.__version__ 

engine = create_engine('sqlite:///:memory:', echo=False)
metadata = MetaData()
users_table = Table('users', metadata,
     Column('id', Integer, primary_key=True),
     Column('name', String),
)
metadata.create_all(engine) 

class User(declarative_base()):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)

    def __init__(self, name):
        self.name = name

Session = sessionmaker(bind=engine)
session = Session()

user1 = User("anurag")
session.add(user1)
session.commit()

# uncommenting next line throws exception 'TypeError: 'User' object is not iterable'
#print …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

220
推荐指数
19
解决办法
18万
查看次数

jsonify在Flask中的SQLAlchemy结果集

我正在尝试在Flask/Python中jsonify一个SQLAlchemy结果集.

Flask邮件列表建议采用以下方法:http://librelist.com/browser//flask/2011/2/16/jsonify-sqlalchemy-pagination-collection-result/#04a0754b63387f87e59dda564bde426e:

return jsonify(json_list = qryresult)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

TypeError: <flaskext.sqlalchemy.BaseQuery object at 0x102c2df90> 
is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

我在这里俯瞰什么?

我发现了这个问题:如何将SqlAlchemy结果序列化为JSON?这看起来非常相似但是我不知道Flask是否有一些魔力使其更容易,如邮件列表帖子所示.

编辑:为了澄清,这就是我的模型

class Rating(db.Model):

    __tablename__ = 'rating'

    id = db.Column(db.Integer, primary_key=True)
    fullurl = db.Column(db.String())
    url = db.Column(db.String())
    comments = db.Column(db.Text)
    overall = db.Column(db.Integer)
    shipping = db.Column(db.Integer)
    cost = db.Column(db.Integer)
    honesty = db.Column(db.Integer)
    communication = db.Column(db.Integer)
    name = db.Column(db.String())
    ipaddr = db.Column(db.String())
    date = db.Column(db.String())

    def __init__(self, fullurl, url, comments, overall, shipping, cost, honesty, communication, name, ipaddr, date): …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

112
推荐指数
7
解决办法
11万
查看次数

如何将Python数据结构中的所有十进制转换为字符串?

我正在使用Flask构建一个网站,我从中大量使用jsonify方法将字典转换为Json.

问题是现在我也经常使用Decimals,不幸的是jsonify无法处理Decimal:

jsonify({'a': Decimal('1')})
Run Code Online (Sandbox Code Playgroud)

导致:

=== (a long stacktrace preceding this) ===
File "/usr/local/lib/python2.7/dist-packages/flask/json.py", line 83, in default
return _json.JSONEncoder.default(self, o)
File "/usr/lib/python2.7/json/encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: Decimal('1') is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

所以我想用这样的方法包装jsonify:

def myOwnJsonify(item):
    if isinstance(item, Decimal):
        return flask.jsonify(str(item))
    else:
        return flask.jsonify(item)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不会转换位于字典或列表中的十进制数.

如何将python数据结构中的所有十进制数字(无论是列表,字典,元组等)转换为字符串,以便我可以安全地将数据结构转换为json?

python json dictionary decimal flask

9
推荐指数
1
解决办法
4295
查看次数

Python将对象列表序列化为JSON

我正在尝试序列化到__dict__一个对象的JSON ,它正常工作,直到我将对象追加到我的第一个对象的一个​​实例属性:

from json import dumps

class A(object):
    def __init__(self):
        self.b_list = []

class B(object):
    def __init__(self):
        self.x = 'X'
        self.y = 'Y'
    def __repr__(self):
        return dumps(self.__dict__)

a = A()

print dumps(a.__dict__)  # works fine

a.b_list.append(B())

print dumps(a.__dict__)
Run Code Online (Sandbox Code Playgroud)

第二次打电话时dumps,我得到以下信息TypeError:

TypeError: {"y": "Y", "x": "X"} is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我一直得到这个错误,而我不明白为什么这不能序列化为JSON.

python json

6
推荐指数
1
解决办法
9572
查看次数

类型错误:类型的对象不可 JSON 序列化

我是rest用 Flask写的flask-marshmallow

模型.py

class Application(db.Model):
    __tablename__ = 'applications'

    id = db.Column(db.String(), primary_key=True)
    name = db.Column(db.String())
    versions = db.relationship('Version', backref='application', lazy=True)

    def __repr__(self):
        return '<application {}>'.format(self.name)


class Version(db.Model):
    __tablename__ = 'versions'

    id = db.Column(db.String(), primary_key=True)
    file = db.Column(db.String(80), nullable=True)
    application_id = db.Column(db.Integer, db.ForeignKey('applications.id'))
Run Code Online (Sandbox Code Playgroud)

谢马斯.py

class ApplicationDetailSchema(ma.Schema):
    class Meta:
        fields = ('id', 'name', 'versions')
Run Code Online (Sandbox Code Playgroud)

路线.py

@bp.route("/<id>")
def application_detail(id):
    application = Application.query.get(id)
    result = application_detail_schema.dump(application)
    return jsonify(result)
Run Code Online (Sandbox Code Playgroud)

类型错误:“版本”类型的对象不可 JSON 序列化

serialization json flask flask-restful

6
推荐指数
1
解决办法
5万
查看次数

在 Python / Sqlalchemy 中从数据库记录访问枚举值

我有一堂这样的课:

class VoteEnum(enum.Enum):
    like = "LIKE"
    dislike = "DISLIKE"
    abstain =  "ABSTAIN"
Run Code Online (Sandbox Code Playgroud)

我有一个数据库来存储这些选票:

class MyVotes(db.Model):
    __tablename__ = "my_votes"
    id = db.Column(db.String, primary_key=True, default=lambda: str(uuid4()))
    item = db.Column(db.String,  nullable=False),
    vote = db.Column(db.Enum(VoteEnum))

    def __str__(self):
        return json.dumps({
            "id":self.id,
            "item":self.item,
            # I want to print the value of vote?
    )}
Run Code Online (Sandbox Code Playgroud)

从 sqlalchemy (在 Flask 中)检索值并打印时,出现以下错误:

类型错误:MyVotes 类型的对象不可 JSON 序列化

也许有办法调用我的 sqlalchemy 请求?也许是类方法?我很感谢人们可以提供的任何帮助。

python enums sqlalchemy

6
推荐指数
1
解决办法
1995
查看次数

在pythonanywhere上备份mysql数据库

我是MySQL新手,知道如何使用mysqldump实用程序备份数据库.但是,我认为它没有安装在pythonanywhere上.我很感激有关如何备份我在pythonanywhere上创建的mysql数据库的任何建议.

谢谢.

mysql pythonanywhere

3
推荐指数
1
解决办法
1202
查看次数

使用 sqlalchemy 读取整个数据库并转储为 JSON

Django 有一个方便的manage.py命令dumpdata ,可以配置为将整个数据库转储为JSON.

目前我仅限于使用sqlalchemy并且我想做同样的事情:

将连接字符串作为输入'mysql+pymysql://user:pwd@localhost:3306/',并获取数据库的内容JSON(我不需要 Django 提供的所有元信息,但我不介意)。

发现这个问题详细说明了如何将 SQLAlchemy 对象转储到 JSON,这来自 sqlalchemy 文档,概述了如何从数据库获取所有表名:

meta = MetaData()
input_db = f'sqlite:///tmpsqlite'
engine = create_engine(input_db)
meta.reflect(bind=engine)
print(meta.tables)
Run Code Online (Sandbox Code Playgroud)

如何检索这些表的所有内容,然后将它们转换为JSONsqlalchemy是否有类似于 django 的 dumpdata 功能的内置命令?

python json sqlalchemy

3
推荐指数
1
解决办法
6414
查看次数

对象不是 Json 可序列化的吗?

我正在尝试查询模型。

例如模型名称称为“Demo”,我想获取表的所有记录。

class Demo(db.Model):

   __tablename__ = "demo"

   field_1 = db.Column(db.String(255), nullable=False)
   field_2 = db.Column(db.String(255), nullable=False)
Run Code Online (Sandbox Code Playgroud)

现在我正在查询

records = Messages.query.all()
Run Code Online (Sandbox Code Playgroud)

我正在尝试发送记录作为响应,所以我面临这个错误。我是烧瓶新手,请帮我解决一下。

python flask

1
推荐指数
1
解决办法
8764
查看次数

在 SQLAlchemy 中检索查询结果作为 dict

我正在使用 Flask SQLAlchemy 并且我有以下代码可以使用来自 MySQL 数据库的原始 SQL 查询从数据库中获取用户:

connection = engine.raw_connection()
cursor = connection.cursor()
cursor.execute("SELECT * from User where id=0")
results = cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

results变量是一个元组,我希望它是 dict() 类型。有没有办法实现这一目标?

当我使用 pymysql 构建数据库连接时,我能够做到

cursor = connection.cursor(pymysql.cursors.DictCursor)
Run Code Online (Sandbox Code Playgroud)

SQLAlchemy 中是否有类似的东西?

注意:我想要做这个改变的原因是为了摆脱在我的代码中使用 pymysql,而只使用 SQLAlcehmy 功能,即我不想在我的代码中的任何地方使用 ´´´import pymysql´´´。

python mysql sqlalchemy flask-sqlalchemy

1
推荐指数
1
解决办法
7112
查看次数

不可 JSON 序列化 - Python + Flask + Sqlalchemy

我正在编写小查询以从mysql数据库中获取数据,我有一个报告表,在里面我有report_id,我需要查询匹配report_id来自apiparams的数据。

我的功能:

def view_single_thumbnail(idx): // idx coming from params 
    session = Session()

    result = session.query(
        Report
    ).filter(
        Report.report_id == idx
    ).all()

    return jsonify({
        'data': result
    })
Run Code Online (Sandbox Code Playgroud)

投掷错误:'components.db.core.table_declaration.Report object at 0x000001C1Fsdfsdf51E6A90' is not JSON serializable

python mysql json sqlalchemy flask

0
推荐指数
1
解决办法
5222
查看次数