2017-09-12 21 views
-3

所以,这里是我的问题如何删除SQL Alchemy ORM中的SQLite表?

我想提出使用SQLAlchemy的ORM

现在的问题是瓶上的应用程序,我可能搞砸表用户的创建;

在models.py代码看起来像

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50)) 
    username = db.Column(db.String(25), unique=True) 
    password = db.Column(db.String(50)) 
    email = db.Column(db.VARCHAR(50), unique=True) 
    registerdate= db.Column(db.DateTime) 

    def __init__(self, 
     name, 
     username, 
     password, 
     email, 
     registerdate=None): 
     self.name = name 
     self.username = username 
     self.password = password 
     self.email = email 
     if registerdate is None: 
      registerdate = datetime.utcnow() 
     self.registerdate = registerdate 

现在,错误是一样的东西

OperationalError: table User has no column named user_name 

这是因为我搞砸表创建,创建与表列“用户名”第一次,当它给了我一个与下划线有关的错误,我试图修改代码,而是跑到另一个错误...

所以我如何删除以前的'用户'SQL表Alchemy ORM中的表,而不使用通常的sqlite3语法和命令?

P.S:我使用的是Ubuntu 16.04蟒蛇终端,比如Atom或Pycharm和东西没有IDE ...

+0

@IljaEverilä可能的,但我真的找不到很多帮助。加上这应该是初学者友好的 –

+0

'User .__ table __。drop([引擎])的哪部分没有帮助? –

+0

@IljaEverilä我没有使用indepth sqlite只是使用它作为分贝,我很新,并没有太多的经验。我认为这会帮助类似的用户。您提到的问题中的语法对我来说很陌生 –

回答

-2

好吧!所以在被'引擎'和sqlite的一大堆其他技术困惑之后,我终于找到了解决方案!

首先通过Ubuntu的终端进入蟒蛇终端......做,

from YourProject import app,db 
    from YourProject.models import Table1,Table2....User #import the classes whose data you want to manipulate 
    import sqlite3 
    con = sqlite3.connect('ABSOLUTE PATH TO YOUR DB FILE') 
    c = con.cursor() 
    c.execute("DROP TABLE User;") 
    db.session.commit()      #i am a bit unsure about this one 

,就是这样,这就是我如何删除我的麻烦“用户”表格。然后我创建了一个新的,它创造奇迹!

而且,我的用户类别代码是以前没有太清楚的格式,如

def __init__(self,name,username,password,email,registerdate=None): 
    self.name = name 
    self.username = username 
    self.password = password 
    self.email = email 
    if registerdate is None: 
     registerdate = datetime.utcnow() 
    self.registerdate = registerdate 

通知,类参数是如何不在“楼梯”形成之前?这也使我在创建表格和向其中添加数据时烦恼。所以一定要保重。

这是一个初学者可能会遇到的问题,并发现令人生畏,希望我帮助别人!

干杯!

+0

您的手动连接/游标对与Flask-SQLAlchemy的会话无关,所以'db.session.commit()'是多余的。 –

+0

另外,您可能引用的引擎不是“sqlite技术性”,而是SQLAlchemy的一部分。首先阅读两篇“首先阅读”主题[here](http://docs.sqlalchemy.org/en/latest/)。 –