2017-09-12 5 views
-3

그래서, 여기, 내가 테이블 사용자의 만들기를 엉망 수 있습니다 내 문제 내가 SQLAlchemy의 ORMSQL 연금술 ORM에있는 SQLite 테이블을 삭제하는 방법?

이제 문제를 사용하여 플라스크에 응용 프로그램을 만드는 중이라서

이다; 코드처럼 보이는 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"열을 먼저 입력하면 밑줄과 관련된 오류가 발생했지만 코드를 수정하려고 시도했지만 다른 오류가 발생했습니다 ...

그래서 이전 'User 'sqlite3 구문과 명령을 사용하지 않고 SQL Alchemy ORM의 테이블?

P.S : 나는 우분투 16.04 파이썬 터미널, 원자 또는 Pycharm 물건처럼 어떤 IDE ...

+0

@ IljaEverilä 가능하지만 실제로 많은 도움을받지 못했습니다. 플러스 이것은 초보자 친화적 인 사람입니다. –

+0

'User .__ table __. drop ([engine])'의 어떤 부분이 도움이되지 않았습니까? –

+0

@ IljaEverilä indepth sqlite를 db로 사용하지 않아서 필자는 매우 익숙하며 많은 경험이 없었습니다. 나는 이것이 유사한 사용자를 도울 것이라고 생각했다. 당신이 언급 한 문항의 문법은 내게는 전혀 외국적이었다. –

답변

-2

좋아을 사용하고 있습니다! 그래서 '엔진'과 sqlite에 관한 다른 많은 기술적 인 지식에 혼란 스러울 때,

나는 결국 해결책을 가지고있다.

먼저 우분투 터미널을 통해 파이썬 터미널을 입력 ... 그리고 수행

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 technicality"가 아니라 SQLAlchemy의 일부입니다. 먼저 "두 번째 읽기"항목 [여기] (http://docs.sqlalchemy.org/en/latest/)을 읽어보십시오. –