SQLAlchemy 向现有数据库添加表

Mic*_*ham 0 python flask flask-sqlalchemy

我正在尝试向 SQLAlchemy 中现有的数据库添加一个表。我的 app.db 已经编译并填充了数据。我只是想向名为song_points 的数据库添加一个新表。(数据库随着时间的推移跟踪歌曲)

我的模型:

from app import db

class songs (db.Model):
    SongID = db.Column(db.Integer,primary_key=True, autoincrement=False)
    Artist = db.Column(db.String(120), primary_key=True)
    Title = db.Column(db.String(120), primary_key = True)
    def __repr__(self):
            return "%s, %s, %d\n" %(self.Artist, self.Title, self.SongID)

class points(db.Model):
    SongID = db.Column(db.Integer, db.ForeignKey("songs.SongID"), nullable= False, primary_key=True)
    Genre = db.Column(db.String(25), primary_key=True)
    Points = db.Column(db.Integer)
    Date = db.Column(db.Date, primary_key=True)
    Rank = db.Column(db.Integer)
    def __repr__self(self):
            return "%d, %s, %d\n" %(self.SongID, self.Genre, self.Points)
class artist_points(db.Model):
    Artist = db.Column(db.String(120), primary_key=True)
    Points = db.Column(db.Integer)
    def __repr__self(self):
        return "%s, %d\n" %(self.Artist, self.Points)

class graphs(db.Model): 
    SongID = db.Column(db.String(120), db.ForeignKey("songs.SongID"), nullable = False, primary_key = True)
    URL = db.Column(db.String(120), primary_key=True)
    def __repr__self(self):
        return "%s, %s\n" %(self.SongID, self.URL)
Run Code Online (Sandbox Code Playgroud)

这是我的数据库创建脚本:

from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path
db.create_all()
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
    api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
else:
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO))
Run Code Online (Sandbox Code Playgroud)

这是我试图添加的表:

class song_points(db.Model):
    SongID = db.Column(db.Integer,db.ForeignKey("songs.SongID"), nullable = False, primary_key = True)
    Genre = db.Column(db.String(25), db.ForeignKey("points.Genre"), nullable = False, primary_key = True)
    Points = db.Column(db.Integer)
Run Code Online (Sandbox Code Playgroud)

Ser*_*aev 6

song_points.__table__.create(db.session.bind)
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码片段可能会解决问题,但 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。 (5认同)
  • 答案是如此简单,以至于不清楚可能需要什么解释。 (2认同)