2016-10-09 5 views
2

Я пытаюсь написать Python Data Data в базу данных MySQL. Я понимаю, что можно использовать sqlalchemy for this, но мне интересно, есть ли другой способ, который может быть проще, желательно уже встроенный в Pandas. Я потратил довольно много времени, пытаясь сделать это с циклом For, но это не реально.Написание фрейма данных Pandas на MySQL

Если кто-то знает лучший способ, было бы весьма полезно.

Большое спасибо!

+0

метод to_sql http://stackoverflow.com/a/16477603/2027457 или http://pandas.pydata.org/pandas-docs/stable/generated/pandas. DataFrame.to_sql.html – sb0709

+0

Метод to_sql работает для меня. Однако имейте в виду, что это будет устаревать в пользу SQLAlchemy: FutureWarning: Примером «mysql» с подключением DBAPI является устаревшее и будет удалено в будущих версиях. MySQL будет поддерживаться с помощью подключаемых модулей SQLAlchemy. chunksize = chunksize, dtype = dtype) –

+0

пока активен, поэтому до тех пор, пока он не будет устаревшим, чем потребуется некоторое время, и если вы не обновляете панды, а должны работать. отправляя ответ, чем. – sb0709

ответ

1

Другой вариант SQLAlchemy можно использовать to_sql, но в будущем будет выпущен одобряется, но теперь в версии панд 0.18.1 документация по-прежнему активен.

Согласно панд документации pandas.DataFrame.to_sql вы можете использовать следующий синтаксис:

DataFrame.to_sql(name, con, flavor='sqlite', schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None) 

можно указать жулик тип/режим и вкус 'MySQL', здесь есть некоторое описание:

con: SQLAlchemy engine или соединение DBAPI2 (устаревший режим) Использование SQLAlchemy позволяет использовать любую базу данных, поддерживаемую этой библиотекой. Если объект DBAPI2 поддерживается только sqlite3.

аромат: {'sqlite', 'mysql'}, по умолчанию 'sqlite' Вкус SQL для использования . Игнорируется при использовании механизма SQLAlchemy. «Mysql» устарел, и будет удален в будущих версиях, но он будет поддерживаться в дальнейшем через SQLAlchemy.

0

Вы можете сделать это с помощью pymysql:

Например, давайте предположим, что у вас есть база данных MySQL со следующим пользователем, паролем, хостом и портом, и вы хотите, чтобы написать в «данные_2» баз данных.

import pymysql 
user = 'root' 
passw = 'my-secret-pw-for-mysql-12ud' 
host = '172.17.0.2' 
port = 3306 
database = 'data_2' 

Если у вас уже есть база данных создана:

conn = pymysql.connect(host=host, 
         port=port, 
         user=user, 
         passwd=passw, 
         db=database, 
         charset='utf8') 

data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql') 

Если вы не имеете базу данных, созданную, также действует, когда база данных уже есть:

conn = pymysql.connect(host=host, port=port, user=user, passwd=passw) 

conn.cursor().execute("CREATE DATABASE IF NOT EXISTS {0} ".format(database)) 
conn = pymysql.connect(host=host, 
         port=port, 
         user=user, 
         passwd=passw, 
         db=database, 
         charset='utf8') 

data.to_sql(name=database, con=conn, if_exists = 'replace', index=False, flavor = 'mysql') 

Аналогичные темы:

  1. Writing to MySQL database with pandas using SQLAlchemy, to_sql
  2. How to insert pandas dataframe via mysqldb into database?
Смежные вопросы