2017-09-12 14 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/)。 –