【问题标题】:how to add items to a single column table in sqlite3如何将项目添加到 sqlite3 中的单个列表
【发布时间】:2019-08-23 11:39:29
【问题描述】:

我是数据库新手。我正在尝试使用包含单列的表创建一个 sqlite 数据库。

创建后,我想在 for 循环中将项目添加到该列。但是,当我这样做时,它只会添加第一项,而不会添加其他任何内容。

我做错了什么?

代码见下:

>>> import sqlite3
>>> con = sqlite3.connect('posts.db')
>>> cur = con.cursor()
>>> cur.execute('CREATE TABLE posts(ID TEXT)')
<sqlite3.Cursor object at 0x7f2b03733650>

>>> con.commit()

>>> for i in 'hello':
...     cur.execute('INSERT INTO posts VALUES(?)',(i,))
...     con.commit()
...     cur.execute('SELECT * FROM posts')
...     print(cur.fetchone())
...
<sqlite3.Cursor object at 0x7f2b03733650>
<sqlite3.Cursor object at 0x7f2b03733650>
('h',)
<sqlite3.Cursor object at 0x7f2b03733650>
<sqlite3.Cursor object at 0x7f2b03733650>
('h',)
<sqlite3.Cursor object at 0x7f2b03733650>
<sqlite3.Cursor object at 0x7f2b03733650>
('h',)
<sqlite3.Cursor object at 0x7f2b03733650>
<sqlite3.Cursor object at 0x7f2b03733650>
('h',)
<sqlite3.Cursor object at 0x7f2b03733650>
<sqlite3.Cursor object at 0x7f2b03733650>
('h',)

正如您在上面看到的,它似乎只包含h 字符,而不是hello 中的其余字符

【问题讨论】:

  • 在我看来,您似乎为 for 循环中的每次迭代执行了一个新的选择查询,并且始终打印该查询的第一个返回行。尝试将for 循环和选择光标循环分开

标签: sql python-3.x database sqlite


【解决方案1】:

我会在 2 次迭代中分解它

for i in 'hello':
    cur.execute('INSERT INTO posts VALUES(?)',(i,))

con.commit()

for row in c.execute('SELECT * FROM posts'):
    print row

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 2021-11-11
    • 2015-11-29
    • 2021-08-25
    • 2021-10-21
    • 2019-11-26
    • 2017-07-14
    • 2012-10-31
    相关资源
    最近更新 更多