python - Sqlalchemy Sqlite 自动增量未按预期运行

标签 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

最佳答案

尝试

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

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

应该可以。

关于python - Sqlalchemy Sqlite 自动增量未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9391759/

相关文章:

python没有名为serial的模块

python - 使用 requests 在 Python 中下载 SSRS 报告

java - SQL服务器异常: when using jdbc connection to retrieve data

c# - Finisar.SQLite.SQLiteException : SQL logic error or missing database: unrecognized token: "$"

sql - 如何确保 mysql 表中没有重复项?

mysql - SQL 查询以查找所有记录的特定值

sqlite - 更新记录及其与 sequelize 的关联

python - 将文件写入 chroot 环境

python - Azure Databricks 中的多重处理

python - 在windows7中安装PIL时出现错误: Unable to find vcvarsall. bat