AttributeError: Не удалось найти столбец в строке для столбца 'translate' - PullRequest
0 голосов
/ 18 марта 2020

Для школьного проекта я должен собрать данные с веб-сайта по своему выбору, превратить его в фрейм данных, затем в базу данных SQL (затем сделать графики и ML на нем). Мы должны опубликовать sh все внутри записной книжки.

Прямо сейчас я застрял с чем-то, что я не могу найти никакого ответа на inte rnet. Я использую "pandas", "py mysql" и "mysql -connector- python" для преобразования моего фрейма данных в базу данных SQL. Шаг, на котором я застрял - это вставка списка кортежей в базу данных / таблицу. Вот мой код и моя трассировка.

Код:

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="admin"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE IF NOT EXISTS projet_simplon;")

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="admin",
  database="projet_simplon"
)
mycursor = mydb.cursor()

connection = pymysql.connect(host='localhost',
                             user='root',
                             password='admin',
                             db='projet_simplon',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

with connection.cursor() as cursor:
    cursor.execute("DROP TABLE IF EXISTS games")
connection.close()

mycursor.execute("""CREATE TABLE IF NOT EXISTS `projet_simplon`.`games` (
  `idGames` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NOT NULL,
  `url` VARCHAR(100) NOT NULL,
  `released` VARCHAR(20) NOT NULL,
  `rating` DECIMAL(2) UNSIGNED NULL,
  `players` INT UNSIGNED NULL,
  `completion` INT UNSIGNED NULL,
  `date` VARCHAR(45) NULL,
  PRIMARY KEY (`idGames`))
ENGINE = InnoDB""")

engine = create_engine('sqlite://', echo=False)
df_final.drop(['platform','genre'],axis=1).to_sql("games",con=engine)
liste_sql = engine.execute('SELECT * from games').fetchall()

liste_sql[:5]
>>> [(0, '"ZAZEN", zen meditation game', '/game/ZAZEN-zen-meditation-game/achievements', 'Released', 2.86, 181, 3, '07 June 2017'),
 (1, '#Funtime', '/game/Funtime/achievements', 'Unreleased', None, None, None, None),
 (2, '#IDARB', '/game/IDARB/achievements', 'Released', 2.69, 76601, 25, '30 January 2015'),
 (3, '#KILLALLZOMBIES', '/game/KILLALLZOMBIES/achievements', 'Released', 3.03, 3917, 3, '10 August 2016'),
 (4, '#WarGames', '/game/WarGames/achievements', 'Released', 2.46, 1266, 11, '31 July 2018')]

connection = pymysql.connect(host='localhost',
                             user='root',
                             password='admin',
                             db='projet_simplon',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

with connection.cursor() as cursor:
    cursor.execute("SHOW TABLES")
    print(cursor.fetchall())
>>> [{'Tables_in_projet_simplon': 'games'}]

with connection.cursor() as cursor:
    sql = "INSERT INTO games(idGames, name,url,rating,released,players,completion,date) VALUES (?,?,?,?,?,?,?,?)"
    cursor.executemany(sql, liste_sql)
connection.commit()

Трассировка:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-53-48ea84e84968> in <module>
      1 with connection.cursor() as cursor:
      2     sql = "INSERT INTO games(idGames, name,url,rating,released,players,completion,date) VALUES (?,?,?,?,?,?,?,?)"
----> 3     cursor.executemany(sql, liste_sql)
      4 connection.commit()

~\Anaconda3\lib\site-packages\pymysql\cursors.py in executemany(self, query, args)
    197                                          self._get_db().encoding)
    198 
--> 199         self.rowcount = sum(self.execute(query, arg) for arg in args)
    200         return self.rowcount
    201 

~\Anaconda3\lib\site-packages\pymysql\cursors.py in <genexpr>(.0)
    197                                          self._get_db().encoding)
    198 
--> 199         self.rowcount = sum(self.execute(query, arg) for arg in args)
    200         return self.rowcount
    201 

~\Anaconda3\lib\site-packages\pymysql\cursors.py in execute(self, query, args)
    166             pass
    167 
--> 168         query = self.mogrify(query, args)
    169 
    170         result = self._query(query)

~\Anaconda3\lib\site-packages\pymysql\cursors.py in mogrify(self, query, args)
    145 
    146         if args is not None:
--> 147             query = query % self._escape_args(args, conn)
    148 
    149         return query

~\Anaconda3\lib\site-packages\pymysql\cursors.py in _escape_args(self, args, conn)
    131             if PY2:
    132                 args = ensure_bytes(args)
--> 133             return conn.escape(args)
    134 
    135     def mogrify(self, query, args=None):

~\Anaconda3\lib\site-packages\pymysql\connections.py in escape(self, obj, mapping)
    458                 ret = "_binary" + ret
    459             return ret
--> 460         return converters.escape_item(obj, self.charset, mapping=mapping)
    461 
    462     def literal(self, obj):

~\Anaconda3\lib\site-packages\pymysql\converters.py in escape_item(val, charset, mapping)
     25         val = encoder(val, charset, mapping)
     26     else:
---> 27         val = encoder(val, mapping)
     28     return val
     29 

~\Anaconda3\lib\site-packages\pymysql\converters.py in escape_unicode(value, mapping)
    116 
    117 def escape_unicode(value, mapping=None):
--> 118     return u"'%s'" % _escape_unicode(value)
    119 
    120 def escape_str(value, mapping=None):

~\Anaconda3\lib\site-packages\pymysql\converters.py in _escape_unicode(value, mapping)
     71     Value should be unicode
     72     """
---> 73     return value.translate(_escape_table)
     74 
     75 if PY2:

AttributeError: Could not locate column in row for column 'translate'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...