python通过pandas读取mysql数据库表

下午研究了下windows下快速操作mysql的方法
不想装workbench,因为要装VS2015
在官网下了一个mysql-shell,用起来还不错,但是我没有更多的权限,select into outfile的时候没有权限
mysql-shell官网下载是个还个还不错的交互式命令行,输入\connect user@server 直接登陆之后\sql转入sql模式,更多的没看。

想到直接用python连接mysql数据库读数据之后存下来或者操作都可以。尝试使用pandas
很多文章都提到MySQLdb这个包,但是py3下没有,怀疑可能是py2的产物,但是找到了一个替代品

import pymysql
import pandas as pd
con=pymysql.connect('genome-mysql.cse.ucsc.edu','genome','','mm10')
df=pd.read_sql('SELECT * FROM refGene',con=con)

这样就可以用panda的read_sql方法了,注意用read_sql_table还是会报错。
其实UCSC上所谓的GenePred格式就是从refGene这个表中选了一部分字段出来

>>> df=pd.read_sql_table('refGene',con)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\nilab\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 234, in read_sql_table
    raise NotImplementedError("read_sql_table only supported for "
NotImplementedError: read_sql_table only supported for SQLAlchemy connectable.

应该是安装sqlalchemy之后就可以直接读表

from sqlalchemy import create_engine  
engine = create_engine("mysql://root:[email protected]/test", pool_size=5,echo_pool=True)  

conn = engine.connect()

table_name = 'user'
datas = pd.read_sql_table(table_name, conn)

其他参考:
mysql内容转换到sqlite3

将数据写入到本地sqlite3

>>> import sqlite3
>>> con=sqlite3.connect('mm10.db')
>>> df.to_sql('refGene',con)
>>> con.close()

猜你喜欢

转载自blog.csdn.net/kekefen01/article/details/84769613