V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
HxSeek
V2EX  ›  Python

flask sqlite3 sql 语句疑问

  •  
  •   HxSeek · 2017-05-29 00:34:02 +08:00 · 2697 次点击
    这是一个创建于 2759 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这是错误提示: db.execute('insert into Comment values ?', (request.form['content'])) OperationalError: near "?": syntax error

    这是执行的操作 db.execute('insert into Comment values ?', (request.form['content']))

    这是数据库 create table Comment( cid integer primary key autoincrement, content string not null );

    请问我究竟错在哪了?

    10 条回复    2017-05-29 13:35:25 +08:00
    linnchord
        1
    linnchord  
       2017-05-29 00:38:07 +08:00
    kindjeff
        2
    kindjeff  
       2017-05-29 08:38:54 +08:00 via iPhone
    你得这么写,'insert into TABLE values (?, ?, ?, ?)', v1, v2, v3, v4
    kindjeff
        3
    kindjeff  
       2017-05-29 08:42:39 +08:00 via iPhone   ❤️ 1
    你这个有两列就得给他两个问号填两个值,不然就要指名填哪些列。
    而且最后你传入的 tuple 只有一个值的话,得加个逗号写成(value,)表示你传入了一个 tuple
    tumbzzc
        4
    tumbzzc  
       2017-05-29 09:24:46 +08:00 via Android
    db.execute('insert into Comment values ?', (request.form['content'],))
    像楼上所说,tuple 如果只有一个值,需要写成(a,)
    HxSeek
        5
    HxSeek  
    OP
       2017-05-29 09:38:52 +08:00
    @tumbzzc 我像你这样写也不行···
    HxSeek
        6
    HxSeek  
    OP
       2017-05-29 09:40:31 +08:00
    @kindjeff 第一列是主键,默认递增加 1,就不用传输吧? 现在只需要传第二列的? 但是我写出像 tumbzzc 那样也不行··
    JamesMackerel
        7
    JamesMackerel  
       2017-05-29 10:57:09 +08:00 via iPhone
    推荐一个 ORM。
    Pony ORM。
    aimoji
        8
    aimoji  
       2017-05-29 11:46:57 +08:00
    'insert into Comment values (null,?)', (request.form['content'],)
    HxSeek
        9
    HxSeek  
    OP
       2017-05-29 13:34:40 +08:00
    @aimoji 谢谢,但觉得一定要写成这样真是奇怪啊,可以的话我以后用 ORM 好了
    kindjeff
        10
    kindjeff  
       2017-05-29 13:35:25 +08:00 via iPhone
    @HxSeek 那你想传哪些行你也得告诉数据库啊……得写成 insert into TABLE (content) values (?)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1552 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.