当将twitter值插入mysql数据库时,我得到“execeptionoccured:must be str“错误

krcsximq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(322)

我正在尝试将tweets插入mysql数据库。
我有程序拉推,连接和创建数据库(如果没有创建)成功。
但是,我得到了一个错误:

  1. Exeception occurred: must be str, not int

当我运行它我得到这个错误。我不知道如何找出它所指的是哪个值?知道是什么原因吗?
我认为是我给mysql列分配了错误的数据类型。因此,当我尝试将int插入str列时,它会抛出错误。
但我已经经历过很多次了,这似乎不是为什么。。。

  1. # !/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
  2. from twitter_api import ACCESS_TOKEN, ACCESS_SECRET, CONSUMER_KEY, CONSUMER_SECRET
  3. # import modules
  4. from pymongo import MongoClient
  5. import tweepy
  6. import datetime
  7. import pymysql.cursors
  8. # Connect to Twitter API
  9. auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
  10. auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
  11. api = tweepy.API(auth)
  12. # Connect to MYSQL database
  13. dbServerName = "localhost"
  14. dbUser = "root"
  15. dbPassword = "woodycool123"
  16. dbName = "azure_support_tweets"
  17. cusrorType = pymysql.cursors.DictCursor
  18. connectionObject = pymysql.connect(host=dbServerName, user=dbUser, password=dbPassword, db=dbName, charset='utf8mb4', cursorclass=cusrorType)
  19. # Get 1000 tweets
  20. searchQuery = "@azuresupport"
  21. searched_tweets = []
  22. last_id = -1
  23. max_tweets = 1000
  24. while len(searched_tweets) < max_tweets:
  25. count = max_tweets - len(searched_tweets)
  26. try:
  27. new_tweets = api.search(q=searchQuery, count=100, max_id=str(last_id - 1))
  28. if not new_tweets:
  29. break
  30. searched_tweets.extend(new_tweets)
  31. last_id = new_tweets[-1].id
  32. except tweepy.TweepError as e:
  33. # depending on TweepError.code, one may want to retry or wait
  34. # to keep things simple, we will give up on an error
  35. break
  36. # Create table for raw tweets if there is none
  37. try:
  38. # Create a cursor object
  39. cursorObject = connectionObject.cursor()
  40. # SQL query string
  41. sqlQuery = "CREATE TABLE IF NOT EXISTS raw_tweets(id_tweet int, id_str_status varchar(32), text_status varchar(200), created_at_status DATETIME(6), truncated varchar(32), in_reply_to_screen_name varchar(32), retweet_count int, favorite_count int, retweeted varchar(32), lang_status varchar(32), id_user int, id_str_user varchar(32), name_user varchar(32), screen_name varchar(32), location_user varchar(32), description_user varchar(32), url_user varchar(100), followers_count_user_user int, favourites_count_user int, lang_user varchar(32))"
  42. # Execute the sqlQuery
  43. cursorObject.execute(sqlQuery)
  44. # Add a row for each tweet
  45. for tweet in searched_tweets:
  46. if tweet.user.screen_name != "azuresupport":
  47. # Assign values to variables
  48. id_tweet = tweet.id
  49. id_str_status = str(tweet.id_str)
  50. text_status = tweet.text
  51. created_at_status = tweet.created_at.strftime('%Y-%m-%d %H:%M:%S')
  52. truncated = tweet.truncated
  53. in_reply_to_screen_name = tweet.in_reply_to_screen_name
  54. retweet_count = tweet.retweet_count
  55. favorite_count = tweet.favorite_count
  56. retweeted = tweet.retweeted
  57. lang_status = tweet.lang
  58. # Fields from the user object
  59. id_user = tweet.user.id
  60. id_str_user = tweet.user.id_str
  61. name_user = tweet.user.name
  62. screen_name_user = tweet.user.screen_name
  63. location_user = tweet.user.location
  64. description_user = tweet.user.description
  65. url_user = tweet.user.url
  66. followers_count_user_user = tweet.user.followers_count
  67. favourites_count_user = tweet.user.favourites_count
  68. lang_user = tweet.user.lang
  69. # Insert row
  70. values = " VALUES (" + id_tweet + id_str_status + text_status + created_at_status + truncated + in_reply_to_screen_name + retweet_count + favorite_count + retweeted + lang_status + id_user + id_str_user + name_user + screen_name + location_user + description_user + url_user, + followers_count_user_user + favourites_count_user + lang_user + ");"
  71. addrowQuery = "INSERT INTO raw_tweets (id_tweet, id_str_status, text_status, created_at_status, truncated, in_reply_to_screen_name, retweet_count, favorite_count, retweeted, lang_status), id_user, id_str_user, name_user, screen_name, location_user, description_user, url_user, followers_count_user_user, favourites_count_user, lang_user) " + values
  72. cursorObject.execute(addrowQuery)
  73. #commit
  74. connectionObject.commit()
  75. except Exception as e:
  76. print("Exeception occured:{}".format(e))
  77. finally:
  78. connectionObject.close()
mpgws1up

mpgws1up1#

我使用了错误的数据类型。。python与mysql数据库
我用类型(i)和mysql命令descripe table raw\u tweets检查了所有的数据类型;发现我分配了错误的数据类型。
谢谢!

相关问题