gpt4 book ai didi

python - Sqlalchemy - 如何修复 '_sa_instance_state'

转载 作者:行者123 更新时间:2023-12-05 03:10:52 27 4
gpt4 key购买 nike

我有一个包含超过 200 000 个 json 文件的文件夹。每个 json 对象都是一个 Tweet(推特)。将推文保存到数据库时出现错误

#sqlalchemy_insert.py
def create_new_tweet(data, new_user):
"""
insert new tweet into db
"""
#tweet
tweet_id = data.get('id')
language = data.get('lang', 'en')
tweet_text = data.get('text')
in_reply_to_user = data.get('in_reply_to_user_id')
coord = check_if_it_s_null(data.get('coordinates'))
geo_location = check_if_it_s_null(data.get('geo'))
created_at = parse(data.get('created_at'))
try:
new_tweet = Tweet(id=tweet_id, tweet=tweet_text,
lang=language,created_at=created_at,
geo=geo_location, coordinates=coord,
user=new_user)
session.add(new_tweet)
except:
import ipdb; ipdb.set_trace()
session.commit()
return new_tweet

我在这一行 session.add(new_tweet) 上遇到错误

ipdb> session.add(new_tweet)
*** AttributeError: 'Query' object has no attribute '_sa_instance_state'

我添加了一个 try 以便能够调试,但我不知道如何将此推文插入此数据库。插入第153条推文后出现此问题

complete gist - line 85

最佳答案

create_new_user 如果用户存在则返回 Query 对象

new_user = session.query(User).filter(User.id == user_id) # it's a query

但您需要将 User 对象传递给 create_new_tweet

你可以这样做

def create_new_user(data):
s_name = (data.get('user').get('screen_name'))
user_name = (data.get('user').get('name'))
user_id = (data.get('user').get('id'))
new_user = session.query(User).filter(User.id == user_id).first() # it's a User object
if new_user is None:
new_user = User(id=user_id, name=user_name, screen_name=s_name)
session.add(new_user)
session.commit()
#creating a profile
create_new_profile(data, new_user)
return new_user

关于python - Sqlalchemy - 如何修复 '_sa_instance_state',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474742/

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