我正在尝试将表添加到SQLAlchemy中已存在的数据库中。我的app.db已经编译并填充了数据。我只是想在一个名为song_points的数据库中添加一个新表。 (数据库随着时间的推移跟踪歌曲)
我的模特:
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))
这是我的数据库创建脚本:
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)
这是我试图添加的表格:
User.joins(:members).where("members.event_id = ?", @event.id)
答案 0 :(得分:2)
public List<LocationViewModel> GetNearesBurgerJoints()
{
var result = (from b in _context.BurgerJoints
join l in _context.Locations on b.Id equals l.Id
select new LocationViewModel
{
Name = b.Name,
Description = b.Description,
Latitude = l.Latitude,
Longitude = l.Longitude
}).ToList();
return result;
}
答案 1 :(得分:0)
请按照Flask-Mega中描述的步骤操作。
首先,在models.py中添加新的表定义
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)
其次,为db upgrade添加新的db_migrate.py文件:
import imp
from migrate.versioning import api
from app import db
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
migration = SQLALCHEMY_MIGRATE_REPO + ('/versions/%03d_migration.py' % (v+1))
tmp_module = imp.new_module('old_model')
old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
exec(old_model, tmp_module.__dict__)
script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, tmp_module.meta, db.metadata)
open(migration, "wt").write(script)
api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
print('New migration saved as ' + migration)
print('Current database version: ' + str(v))
之后,运行python db_migrate.py
以反映models.py中的所有更改。我让代码在本地运行。如果你仍然无法使它工作,请告诉我。
class graphs(db.Model):
SongID = db.Column(db.String(120), db.ForeignKey("songs.SongID"), nullable = False, primary_key = True)
致:
class graphs(db.Model):
SongID = db.Column(db.Integer, db.ForeignKey("songs.SongID"), nullable = False, primary_key = True)
答案 2 :(得分:0)
只需打开终端并输入以下命令:
from app import db
db.create_all()
exit()
现在打开数据库查看器并删除您的数据库文件。您必须看到新表以及所有旧表及其数据。