标签: sqlalchemy

sqlalchemy ORM:如何声明包含多列主键的表类?

主键的列必须按特定顺序排列.

我从文档中看到一些代码:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer)

    __mapper_args__ = {
        'primary_key':[id]
    }
Run Code Online (Sandbox Code Playgroud)

但它只是不起作用(我使用的是mysql,并且不会生成id主键).任何可能的解决方

python sqlalchemy

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

SQLAlchemy:创建一个故意空的查询?

在SQLAlchemy中创建故意空查询的最佳方法是什么?

例如,我有一些构建查询的函数(WHERE例如添加子句),在某些时候我知道结果将为空.

创建不返回任何行的查询的最佳方法是什么?像Django的东西QuerySet.none().

python sqlalchemy

27
推荐指数
3
解决办法
5262
查看次数

使用ORM时的情况(SQLalchemy)

我正在使用SQLAlchemy和ORM paragdim.我无法找到一种方法来执行CASE WHEN指令.我在网上找不到这方面的信息.

可能吗 ?

python orm sqlalchemy

27
推荐指数
2
解决办法
2万
查看次数

sqlalchemy:'InstrumentedList'对象没有属性'filter'

我有以下3个班级:

class Resource:
    id = Column(Integer, primary_key=True)
    path = Column(Text)
    data = Column(Binary)
    type = Column(Text)

    def set_resource(self, path, data, type):
        self.path = path
        self.data = data
        self.type = type

class EnvironmentResource(Base, Resource):
    __tablename__ = 'environment_resources'
    parent_id = Column(Integer, ForeignKey('environments.id', ondelete='CASCADE'))
    def __init__(self, path, data, type):
        self.set_resource(path, data, type)

class Environment(Base):
    __tablename__ = 'environments'
    id = Column(Integer, primary_key=True)
    identifier = Column(Text, unique=True)
    name = Column(Text)
    description = Column(Text)

    _resources = relationship("EnvironmentResource",
        cascade="all, delete-orphan",
        passive_deletes=True)
    _tools = relationship("Tool",
        cascade="all, delete-orphan",
        passive_deletes=True) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

SqlAlchemy和Flask,如何查询多对多关系

我需要帮助创建SqlAlchemy查询.

我正在做一个Flask项目,我正在使用SqlAlchemy.我在models.py文件中创建了3个表:Restaurant,Dish和restaurant_dish.

restaurant_dish = db.Table('restaurant_dish',
    db.Column('dish_id', db.Integer, db.ForeignKey('dish.id')),
    db.Column('restaurant_id', db.Integer, db.ForeignKey('restaurant.id'))
)

class Restaurant(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(64), index = True)

    restaurant_dish = db.relationship('Dish', secondary=restaurant_dish,
        backref=db.backref('dishes', lazy='dynamic'))


class Dish(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(64), index = True)
    info = db.Column(db.String(256), index = True)
Run Code Online (Sandbox Code Playgroud)

我已将数据添加到restaurant_dish表中,它应该正常工作.我需要帮助的地方是了解如何使用餐厅正确获取菜肴.原始SQL将是这样的:

SELECT dish_id FROM restaurant_dish WHERE restaurant_id == id
Run Code Online (Sandbox Code Playgroud)

我设法完成但没有工作:

x = Restaurant.query.filter_by(Restaurant.restaurant_dish.contains(name)).all()
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,我也非常感谢教程可以指向正确的方向(官方文档在我的脑海中).

python sql many-to-many sqlalchemy flask

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

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

AttributeError:使用flask-sqlalchemy连接到sqlite数据库时无法设置属性

我一直在学习 Flask Web 应用程序框架并且对它感到很舒服。我以前构建了一个简单易用的应用程序,它运行良好。我在同一个项目上工作,但尝试使用 TDD 来实现它。我遇到了以前从未见过的数据库错误,不知道如何修复。

当我检查我的代码时,我看不出任何问题。它看起来也与工作项目的代码相同,所以我真的不知道我做错了什么。

这是错误:

(env) PS C:\coding-projects\task-master-tdd> flask shell
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (Intel)] on win32
App: project [development]
Instance: C:\coding-projects\task-master-tdd\instance
>>> from project import db
>>> db
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "c:\coding-projects\task-master-tdd\env\lib\site-packages\flask_sqlalchemy\__init__.py", line 1060, in __repr__
    self.engine.url if self.app or current_app else None
  File "c:\coding-projects\task-master-tdd\env\lib\site-packages\flask_sqlalchemy\__init__.py", line 943, in engine
    return self.get_engine()
  File "c:\coding-projects\task-master-tdd\env\lib\site-packages\flask_sqlalchemy\__init__.py", line 962, in get_engine
    return connector.get_engine()
  File …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

27
推荐指数
2
解决办法
4906
查看次数

SQLAlchemy 模型与 Pydantic 模型

我正在按照本教程进行调整,以适应我的需求,在本例中,执行一个 sql 模块,我需要在其中记录 webhook 从 gitlab 问题收集的数据。

对于数据库模块,我使用SQLAlchemy库和PostgreSQL作为数据库引擎。

所以,我想解决一些关于Pydantic库的使用的疑问,特别是这个例子

据我所知,Pydantic 是一个使用带有属性的类进行数据验证的库。

但我不太明白一些事情......Pydantic 的集成是绝对必要的吗?我理解使用 Pydantic 的目的,但我不明白使用 Pydantic 与 SQLAlchemy 模型的集成。

教程中,models.py有以下内容:

from sqlalchemy import Boolean, Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship

from .database import Base


class User(Base):
    __tablename__ = "users"

    id = Column(Integer, primary_key=True, index=True)
    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)

    items = relationship("Item", back_populates="owner")


class Item(Base):
    __tablename__ = "items"

    id = …
Run Code Online (Sandbox Code Playgroud)

python sql sqlalchemy pydantic

27
推荐指数
1
解决办法
4万
查看次数

如何使用sqlalchemy创建db mysql

我需要使用sqlalchemy在mysql中创建一个db,如果它已经存在,我可以连接到db,但是我希望能够创建它,如果它不存在的话.这是我的表:

    #def __init__(self):
Base = declarative_base()

class utente(Base):
    __tablename__="utente"
    utente_id=Column(Integer,primary_key=True)
    nome_utente=Column(Unicode(20))
    ruolo=Column(String(10))
    MetaData.create_all()

    def __repr(self):
        return "utente: {0}, {1}, id: {2}".format(self.ruolo,self.nome_utente,self.utente_id)


class dbmmas(Base):

    __tablename__="dbmmas"
    db_id=Column(Integer,primary_key=True,autoincrement=True)
    nome_db=Column(String(10))
    censimento=Column(Integer)
    versione=Column(Integer)
    ins_data=Column(DateTime)
    mod_data=Column(DateTime)
    ins_utente=Column(Integer)
    mod_utente=Column(Integer)
    MetaData.create_all()

    def __repr(self):
        return "dbmmas: {0}, censimento {1}, versione {2}".format(self.nome_db,self.censimento,self.versione)    

class funzione(Base):
    __tablename__="funzione"
    funzione_id=Column(Integer,primary_key=True,autoincrement=True)
    categoria=Column(String(10))
    nome=Column(String(20))
    def __repr__(self):
        return "funzione:{0},categoria:{1},id:{2} ".format(self.nome,self.categoria,self.funzione_id)

class profilo(Base):
    __tablename__="rel_utente_funzione" 
    utente_id=Column(Integer,primary_key=True)
    funzione_id=Column(Integer,primary_key=True)
    amministratore=Column(Integer)
    MetaData.create_all()

    def __repr(self):
        l=lambda x: "amministratore" if x==1 else "generico"
        return "profilo per utente_id:{0}, tipo: {1}, funzione_id: {2}".format(self.utente_id,l(self.amministratore),self.funzione_id)    

class aree(Base):
    __tablename__="rel_utente_zona" …
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy

26
推荐指数
4
解决办法
4万
查看次数

SQLAlchemy - 什么是declarative_base

我正在学习sqlalchemy.这是我的初始代码:

文件:user.py

from sqlalchemy import Column,Integer,Sequence, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
  __tablename__ = 'users'
  id = Column(Integer,Sequence('user_seq'),primary_key=True)
  username   = Column(String(50),unique=True)
  fullname = Column(String(150))
  password  = Column(String(50))
  def __init__(self,name,fullname,password):
    self.name = name
    self.fullname = fullname
    self.password = password
Run Code Online (Sandbox Code Playgroud)

文件main.py

from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from user import User
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
if __name__ == '__main__':
  engine = create_engine('mysql://root:password@127.0.0.1:3306/test',echo=True)
  Base.metadata.create_all(engine, checkfirst=True)
  Session = sessionmaker(bind=engine)
  session = Session()
  ed_user = User('ed', …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

标签 统计

python ×10

sqlalchemy ×10

flask-sqlalchemy ×2

sql ×2

flask ×1

many-to-many ×1

mysql ×1

orm ×1

pydantic ×1