【问题标题】:SQLAlchemy script works fine with sqlite3 but raises errors when used with MYSQLSQLAlchemy 脚本适用于 sqlite3,但与 MYSQL 一起使用时会引发错误
【发布时间】:2022-02-09 04:46:01
【问题描述】:

SQLAlchemy 脚本在 sqlite3 上运行良好,但是当连接到 MYSQL 数据库时,它会给出不同的错误,例如:

  • AttributeError: '_NoResultMetaData' 对象没有属性 '_indexes_for_keys'
  • sqlalchemy.exc.NoSuchColumnError: 无法在“filters.id”列的行中找到列
  • KeyError: Column('id', Integer(), table=, primary_key=True, nullable=False)

这些函数在单独运行时工作正常,但与烧瓶一起使用时会引发上述错误。

我的数据库模型:

from sqlalchemy import Column, Integer, String, MetaData, Boolean, DateTime
from sqlalchemy.ext.declarative import declarative_base

import datetime


Base = declarative_base()


class ProfileData(Base):
    __tablename__ = 'profile_data'

    id = Column(Integer, primary_key=True)
    user_id = Column("user_id", Integer)
    user_profile_link = Column(String(100))
    username = Column(String(100))
    name = Column(String(100))
    is_verified = Column(Boolean)
    website = Column(String(100))
    bio = Column(String(1000))
    location = Column(String(100))
    created_at = Column(DateTime)
    followers = Column(Integer)
    following = Column(Integer)
    _datetime = Column(DateTime, default=datetime.datetime.utcnow)

提前致谢。

【问题讨论】:

    标签: python mysql flask sqlalchemy


    【解决方案1】:

    我会建议这样做,这通常是我的设置方式

    来自 SQLAlchemy 的第一个初始化数据库对象

    db = SQLAlchemy()
    

    然后使用 db.model 声明模型

    class ProfileData(db.Model):
    
        __tablename__ = 'profile_data'
    
        id = db.Column(db.Integer, primary_key=True)
        user_id = db.Column("user_id", db.Integer)
        user_profile_link = db.Column(db.String(100))
        username = db.Column(db.String(100))
    

    希望这能解决您的问题

    【讨论】:

    • 谢谢。它奏效了。
    • 总是欢迎很高兴它确实有效:D @HuzaifaFarooq
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2021-06-07
    • 2014-05-30
    • 1970-01-01
    • 2014-08-11
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多