gpt4 book ai didi

python - Python 中的数据类型不匹配试图用一些推特数据更新 Sqlite3 数据库

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:41 24 4
gpt4 key购买 nike

我认为我的问题与 twitter created_at 日期字段有关,但我不确定。这是我认为有问题的表格:

 sql_create_tweets_table = """ CREATE TABLE IF NOT EXISTS tweets (
id integer PRIMARY KEY,
user_id integer NOT NULL,
created_at text,
short_text text,
full_text text
); """

我以这种方式转换我的 Twitter created_at 日期:

 vcreated_at = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(data['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))

这会将传入的“Tue Nov 13 19:07:58 +0000 2018”更改为“2018-11-13 19:07:58” 我相信 sqlite 可以接受。更新中仅包含两个整数字段和两个文本字段。所以我怀疑日期触发了错误,但我不确定如何检查它。当我检查 created_at 和 vcreated_at 的类型时,它们和表列一样都是文本。

这是尝试添加行但失败的代码:

 def updateTables(vcreated_at, vid, vtext, vlongtext, vuser_id, vname, 
vscreen_name):
# now update the sql file

conn = create_connection(my_file)
if conn is not None:
cur = conn.cursor()

try:
cur.execute('''
INSERT INTO
tweets
VALUES
(?,?,?,?,?) ''',
(vcreated_at, vid, vtext, vlongtext, vuser_id))
except Exception as e: print(e)

cur.execute('''
INSERT INTO
users
VALUES
(?,?,?) ''',
(vuser_id, vname, vscreen_name))

conn.commit()
conn.close()

为此花了几个小时,但卡住了!

最佳答案

您似乎正试图将非 INTEGER 放入 id 列。由于 id 列是 rowid 的别名(即使用 id INTEGER PRIMARY KEY 定义使其成为特殊/通常隐藏的 rowid 列的别名) 它必须是一个整数值,因此数据类型不匹配错误。

  • (INTEGER PRIMARY KEY 是一种特殊情况,它使该列成为 rowid 列的别名) SQLite Autoincrement (自增只能用于rowid的别名)
  • 除了该规则的异常(exception)情况外,您可以将任何类型的值放入任何类型的列中。

要解决此问题,您可以将参数/自变量改组为 (vid, vuser_id, vcreated_at, vtext, vlongtext) 以适应值的预期顺序。

即值按照列定义的顺序排列。

或者,您可以使用 INSERT INTO tweets (created_at, id, short_text, full_text, user_id) VALUES (?,?,?,?,?) 以及 (vcreated_at, vid, vtext, vlongtext, vuser_id).

也就是说,您指定值将匹配到的列。

使用此选项,您的代码将是:-

try:
cur.execute('''
INSERT INTO
tweets (created_at, id, short_text, full_text, user_id)
VALUES
(?,?,?,?,?) ''',
(vcreated_at, vid, vtext, vlongtext, vuser_id))
except Exception as e: print(e)
  • 上面假设vid 是一个整数并且是唯一的。如果 vid 与另一行的 id 列中存在的值相同,那么您将违反 UNIQUE 约束,因为 rowid 的别名是隐式唯一的。

关于python - Python 中的数据类型不匹配试图用一些推特数据更新 Sqlite3 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53876424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com