我有一个自动映射来处理我的应用程序项目中的现有数据库。当我用烧瓶运行命令在我的电脑上启动它时,它工作正常,并将数据保存在数据库中。现在我正在尝试将我的应用程序放在 debian 服务器上,当我使用 gunicorn 运行应用程序时,它会返回此错误:
sqlalchemy.exc.ArgumentError: Mapper mapped class Applications->applications could not assemble any primary key columns for mapped table 'applications'.
这是我的models.py:
from flask_login import UserMixin
from sqlalchemy import Column, Date, Integer, String, create_engine
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext.automap import automap_base
Base = automap_base()
class User(UserMixin, Base, db.Model):
__tablename__ = "accounts"
def __repr__(self):
return "User {}".format(self.acc_username)
def get_id(self):
return (self.acc_id)
class Char(Base, db.Model):
__tablename__ = "characters"
def __repr__(self):
return self.char_name.replace('_',' ')
class Applications(Base, db.Model):
__tablename__="applications"
def __repr__(self):
return "Application ".format(self.id)
Base.prepare(db.engine, reflect=True)
@login.user_loader
def load_user(id):
return User.query.get(int(id))
我已经尝试将主键列指定到类中,但是在此之后,它没有找到其他参数,所以就好像它要我一一写,好像现有数据库中的自动映射没有工作
这是数据库声明:
db = SQLAlchemy(app)
数据库配置:
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'app.db')
数据库网址:
DATABASE_URL=mysql+pymysql://root:xxxx@localhost:3306/xxxx