大表 更新失败 mysql_Flask远端mysql数据库更新表失败

在Windows环境下使用PyCharm和Flask开发,尝试将SQLite数据库迁移到虚拟机上的MySQL时遇到问题。创建数据库成功,但迁移过程中报错,错误源于 INTEGER 类型参数。本地SQLite迁移会清空表,即使未做修改。迁移脚本可能不适用于MySQL。教程中的迁移脚本是针对SQLite的,可能导致不兼容。寻求解决数据库迁移问题的指导。
摘要由CSDN通过智能技术生成

1、学习Flask,windows pycharm编写,数据库是虚拟机上的MySQL,现在情况是创建数据库没有问题,但是进行数据库迁移总是报错,使用本地sqlite迁移没有报错,但似乎会将表清空了,我未做任何表修改,按道理应该保持原样才对!

错误如下:

File "D:Pythonpythonflaskmicroblogdb_repositoryversions001_migration.py", line 9, in

Column('id', INTEGER(display_width=11), primary_key=True, nullable=False),

TypeError: object() takes no parameters

Process finished with exit code 1

生成的迁移脚本感觉有点问题:

deptments = Table('deptments', pre_meta,

Column('id', INTEGER(***display_width=11***), primary_key=True, nullable=False),

Column('dname', VARCHAR(length=10)),

)

followers = Table('followers', pre_meta,

Column('follower_id', INTEGER(***display_width=11***)),

Column('followed_id', INTEGER(***display_width=11***)),

)

2、使用的迁移脚本是教程中的,不多针对的是本地sqlite的

脚本如下:

# /usr/bin/python

# -*- coding:utf-8 -*-

__author__ = 'summer'

import imp

from migrate.versioning import api

from app import db

from config import SQLALCHEMY_MIGRATE_REPO

from config import SQLALCHEMY_DATABASE_URI

migration = SQLALCHEMY_MIGRATE_REPO + '/versions/%03d_migration.py'%\

(api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)+1)

tmp_module = imp.new_module('old_model')

old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)

exec old_model in 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)

print 'New migration saved as ' + migration

print 'Current database version: ' + unicode(api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO))

有遇到的指点一二,多谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值