2012-02-22 2 views
2

올바른 방법으로 내 PK를 증가시키는 데 문제가 있습니다. sqlalchemy 문서 다음에 몇 가지 특별한 구성이 sqlite와 함께 작동하도록 수행되어야합니다. 여기 내 스크립트입니다Sqlalchemy Sqlite 자동 증가가 예상대로 작동하지 않습니다.

def db_stuff(): 
    engine = create_engine('sqlite:///test.db', echo=True) 
    metadata = MetaData() 
    db = Table('users', metadata, 
     Column('id', Integer, primary_key=True), 
     Column('name', String), 
     Column('fullname', String), 
     Column('password', String), 
     sqlite_autoincrement=True) 
    metadata.create_all(engine) 
    return engine.connect(),db 


def add_to_db(): 
    ret = db_stuff() 
    conn = ret[0] 
    db = ret[1] 
    try: 

     conn.execute("INSERT INTO users VALUES ('1','john','smith john','23')") 
     result = conn.execute(db.select()) 
     for row in result: 
      print row 
    finally: 
     conn.close() 

당신이 날, 나는 필사적으로 무엇을 시작 내가 여기에 누락 파악하는 데 도움 수 있다면 그것은 멋진 것 ... 문제는 "ID가"증가되지 않는 것입니다 매번 스크립트를 두 번 실행하면 고유해야한다는 오류가 나타납니다.

TIA

답변

5

그러나 우리는 테이블 즉 다른 매개 변수가 무엇을 나타내는 지 지정해야

conn.execute("INSERT INTO users(name, fullname, password) VALUES ('john','smith john','23')") 

ID가 따라서 우리가 그것을 통과 안 자동 증가이다 시도 어디에해야 값 ('존', '스미스 존', ' 23 ') 가야한다.

제대로 작동합니다.

+0

매력을 좋아합니다.) thx – user1225343

0

는이 작업을 수행합니다 : 당신은 1에 ID를 설정하는

conn.execute("INSERT INTO users VALUES ('john','smith john','23')") 

- 항상. 그냥 그대로두면 자동 증가로 채워집니다.

+0

안녕하세요, 나는 다음과 같은 오류가 발생했습니다 : 테이블 사용자가 4 개의 열을 가지고 있지만 3 개의 값이 제공되었습니다 "VALUE ('john', 'smith john', '23')"() 또한 시도 : conn.execute ("INSERT INTO 사용자 VALUES ('', '존', '스미스 존', '23')") "데이터 유형 불일치"INSERT INTO users VALUES ('', 'john' , 'smith john', '23') "() – user1225343

+0

그러면 id 열이 자동 증가로 설정되지 않습니다. –

+0

@ user1225343,'id' 컬럼에'None'을 전달하려고 시도하십시오. – warvariuc

관련 문제