标签: flask-sqlalchemy

Flask-SQLAlchemy 引发:AttributeError:模块“psycopg2”没有属性“paramstyle”

我正在 Python 3.10 上运行一个通用的(因为我不知道做任何超出基础知识的事情)Flask-SQLAlchemy 3.0.2 设置。

不知道发生了什么,但在某个时候,每次我尝试查询数据库时它都会开始抛出此错误: AttributeError: module 'psycopg2' has no attribute 'paramstyle'

我正在通过诗歌进行包管理,并且 SQLAlchemy 1.4.44 确实想使用 psycopg2 2.7,我猜它早于日期paramstyle

python sqlalchemy psycopg2 flask flask-sqlalchemy

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

烧瓶SQLAlchemy的.创建几个相同的所有字段的表

我正在使用Flask及其SQLAlchemy扩展.我需要定义几个模型类,它们将在MySQL数据库中创建表.这些表只会因名称而不同,其中的所有字段名称/数据类型都是相同的.如何为所有这些表定义类?我正在考虑继承,但我不确定我究竟会这样做.

python sqlalchemy flask flask-sqlalchemy

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

查询一对多关系SQLAlchemy

我试图根据这些表中的技能查询用户.

class User(UserMixin, db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    skills = db.relationship('Skill', backref='author', lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)
class Skill(db.Model):
    __tablename__ = 'skills'

    id = db.Column(db.Integer, primary_key=True)
    skill = db.Column(db.String(64), index=True)
    author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
Run Code Online (Sandbox Code Playgroud)

我在用户表中尝试了这个并得到了这个错误.

@classmethod
def users_by_skill(cls, skill):
    return User.query.join(Skill).filter(skill.skill).all()
Run Code Online (Sandbox Code Playgroud)
AttributeError: 'str' object has no attribute 'skill'
Run Code Online (Sandbox Code Playgroud)

我错过了哪里?

python flask-sqlalchemy

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

Flask-SQLAlchemy加入

您好我在flask-sqlalchemy加入了一个问题.我是数据库和烧瓶的初学者.

这些是我的课程:

class Shopping(db.Model):
    __tablename__ = 'shoppings'
    id = db.Column(db.Integer, primary_key=True)
    product_name = db.Column(db.String(30), index=True, unique=False)
    price=db.Column(db.Float(10), index=True)
    date=db.Column(db.Date())
    s_type_id = db.Column(db.Integer, db.ForeignKey('shopping_types.id'))
    def __repr__(self):
        return 'Alisveris yeri :{0}  Tutar :{1}  Tarih:      {2}'.format(self.product_name,self.price,self.date)

    def __list__(self):
        return [self.product_name,self.price,self.date]

class Shopping_Type(db.Model):
    __tablename__='shopping_types'
    id=db.Column(db.Integer,primary_key=True)
    type_name=db.Column(db.String(30), index=True, unique=True)
    types = db.relationship('Shopping', backref = 'shopping_types', lazy = 'dynamic')
    def __repr__(self):

        return '{0}'.format(self.type_name)
Run Code Online (Sandbox Code Playgroud)

当我尝试python终端并运行:

select shoppings.product_name ,shoppings.price, shoppings.date, shopping_types.type_name from shoppings join shopping_types ON shoppings.s_type_id=shopping_types.id
Run Code Online (Sandbox Code Playgroud)

询问

我得到了我想要的但是当我运行flask-sqlalchemy命令时:

rslt=db.session.query(spng).join(st)
spng:Shopping(class)
st:Shopping_Type(class)
Run Code Online (Sandbox Code Playgroud)

我只获得购物数据.我想购买Shopping + Shopping_Type数据.

谢谢.

python join sqlalchemy flask-sqlalchemy

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

ImportError:没有名为flaskext.sqlalchemy的模块

我正在尝试使用Flask网站上的SteamID片段登录.但是,ImportError: No module named flaskext.sqlalchemy当我尝试运行它时,我得到了,并且PyCharm说Uresolved reference "flaskext"Uresolved reference "OpenID".我重新安装了Flask-OpenID和Flask-SQLAlchemy,以确保它们在那里.为什么我会收到此错误,如何解决?

python flask flask-sqlalchemy flask-extensions

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

Flask-SQLAlchemy:更新一对多关系

我有两个模型:

class Project(db.Model):
    __tablename__ = 'project'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    timestamp = db.Column(db.DateTime)
    info = db.Column(db.Text(255))

    post = db.relationship('Post', backref=db.backref('projects'))

class Post(db.Model):
    __tablename__ = 'post'

    id = db.Column(db.Integer, primary_key=True)
    headline = db.Column(db.String(64))
    content = db.Column(db.Text(255))
    timestamp = db.Column(db.DateTime)

    projectId = db.Column(db.Integer, db.ForeignKey('project.id'))
Run Code Online (Sandbox Code Playgroud)

例如,如果我创建一个post实例,然后通过projectInstance.append(post(headline="...", content="..."))
Now 将其附加到项目中,则我想更新该post所属的项目。除了查询所需的项目,将帖子附加到该项目并将其从旧项目中删除,还有没有更简单的方法?

oldProject.remove(post)
newProject.append(post)
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

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

是否有使用Sqlalchemy的Flask动态查询生成器?

一个简单的查询看起来像这样

User.query.filter(User.name == 'admin')
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我需要检查正在传递的参数,然后根据该参数从数据库中过滤结果。

例如,如果User表包含诸如用户名,位置和电子邮件之类的列,则request参数可以包含其中之一,也可以具有列的组合。我不想创建如下所示的每个参数并链接过滤器,而是创建一个动态查询字符串,该查询字符串可以传递给一个过滤器并返回结果。我想创建一个单独的函数,该函数将评估所有参数并生成查询字符串。一旦生成查询字符串,我就可以传递该查询字符串对象并获得所需的结果。我想避免使用RAW SQL查询,因为它违反了使用ORM的目的。

if location:
    User.query.filter(User.name == 'admin', User.location == location)
elif email:
    User.query.filter(User.email == email)
Run Code Online (Sandbox Code Playgroud)

python mysql flask-sqlalchemy

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

Flask-SQLAlchemy按关系属性查询记录

在我一直在研究的应用程序中,使用Flask-User及其建议的模型进行授权控制。这是一个例子:

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)

    # User Authentication information
    username = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String(255), nullable=False, default='')

    # User Email information
    email = db.Column(db.String(255), nullable=False, unique=True)
    confirmed_at = db.Column(db.DateTime())

    # User information
    is_enabled = db.Column(db.Boolean(), nullable=False, default=False)


    # Relationships
    roles = db.relationship('Role', secondary='user_roles',
                            backref=db.backref('users', lazy='dynamic'))

class Role(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(50), unique=True)

class UserRoles(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE'))
    role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE'))
Run Code Online (Sandbox Code Playgroud)

另外,作为Flask-User / Flask-Login的一部分,current_user …

python sqlalchemy flask flask-sqlalchemy

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

Sqlalchemy枚举迁移更新失败,说不存在

我有以下sqlalchemy模型:

class Cart(db.Model):
    __tablename__ = 'carts'
    #...
    cart_status = db.Column(db.Enum('confirmed', 'canceled', name='cart_statuses'))
Run Code Online (Sandbox Code Playgroud)

哪个生成以下迁移脚本:

"""empty message

Revision ID: c7cbe7d1d686
Revises: 56e9612a77ee
Create Date: 2017-06-21 08:52:00.987769

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'c7cbe7d1d686'
down_revision = '56e9612a77ee'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('carts', sa.Column('cart_status', sa.Enum('confirmed', 'canceled', name='cart_statuses'), nullable=True))
    # ### end Alembic commands ###


def downgrade():
    # ### …
Run Code Online (Sandbox Code Playgroud)

python postgresql enums sqlalchemy flask-sqlalchemy

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

flask-session:如何创建会话表

我正在尝试使用SQLite数据库为我的flask应用程序启用服务器端会话。注意我使用的是Flask-Sessionstore,它是Flask-Session的硬分叉,并且得到了更积极的维护。但是,当我同时使用两个库时,都会遇到相同的错误。这是我的代码app.py

from flask import Flask, session
from flask_sqlalchemy import SQLAlchemy
from flask_sessionstore import Session

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////Users/Johnny/DBs/test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # quiet warning message
app.config['SESSION_TYPE'] = 'sqlalchemy'
Session(app)

@app.route('/')
def index():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,python app.py一切都会启动并按预期运行。但是,当我尝试访问位于http://127.0.0.1:5000的索引页时,出现以下错误:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: sessions [SQL: 'SELECT sessions.id AS sessions_id, sessions.session_id AS sessions_session_id, sessions.data AS sessions_data, sessions.expiry AS sessions_expiry \nFROM sessions \nWHERE sessions.session_id = ?\n …
Run Code Online (Sandbox Code Playgroud)

python sqlite session flask flask-sqlalchemy

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