Sqlalchemy Sqlite自动增量不符合预期

时间:2012-02-22 09:00:01

标签: python sql sqlite sqlalchemy

我的脚本以正确的方式增加PK,我遇到了一些麻烦。在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

2 个答案:

答案 0 :(得分:5)

尝试

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

id是自动增量因此我们不应该传递它,但是我们需要指定表中其他参数表示的内容,即值应该在哪里(' john',' smith john', ' 23')应该去。

它应该有用。

答案 1 :(得分:0)

这样做:

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

您将ID设置为1 - 始终。只要离开它就会因为自动增量而被填充。