2017-09-12 9 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 

のようなものである、のように私はテーブルを作成、テーブル作成を台無しにするので、これは見えます列「user_name」が最初に、アンダースコアに関連するエラーが発生したときに、コードを修正しようとしましたが、別のエラーが発生しました...

'SQL錬金術ORMのテーブルsqlite3の構文とコマンドを使用せずに?

P.S:私はUbuntuの16.04のpython端子、原子またはPycharmやもののような無IDEを使用しています...

+0

@IljaEverilä可能ですが、実際にはそれほど助けがありませんでした。プラスこれは初心者であると思われています –

+0

'User .__ table __。drop([engine])'のどの部分が役に立ちませんでしたか? –

+0

@IljaEverilä私はindepth sqliteをdbとして使用していませんでしたが、これはかなり新しく、多くの経験はありませんでした。私はこれが類似したユーザーに役立つだろうと思った。あなたが言及している質問の構文は私にとってかなり外国語だった –

答えて

-2

よし!だから、 'エンジン'とsqliteに関する他の多くの技術で混乱した後、

私はついに解決を得ました!

まずUbuntuの端子を介してのpython端子を入力して...とやる、

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の一部です。最初に2つの「この最初にお読みください」のトピック[ここ](http://docs.sqlalchemy.org/en/latest/)を読んで始めてください。 –

関連する問題