记录一下学习pandas遇到的问题
需要安装pymysql、sqlalchemy
基本语句:
from sqlalchemy import create_engine
engine = create_engine("mysql+pymysql://{}:{}@{}/{}?charset={}".format('用户名', '密码', 'localhost:3306', '数据库名','字符集'))
#第二种create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8')
con = engine.connect()#创建连接
df.to_sql(name='rumousdata', con=con, if_exists='append', index=False)
遇到的问题
学习资料没有提到 engine.connect()
,导致追加数据一直出错。
完整示例:
import numpy as np
import pandas as np
from sqlalchemy import create_engine
df = pd.DataFrame([[12345,'Edogawa', 'Conan', '', 'Tokyo']],columns=['PersonID', 'LastName', 'FirstName', 'Address', 'City'])
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8')
#to_sql的参数if_exists值为append时,必须有此语句。
#参数为replace是,可不写此语句
con = engine.connect()
df.to_sql(name='Persons', con=con, if_exists='append', index=False)
#参数name:表名
# 参数if_exists:
# 1.fail:如果表已经存在,不执行sql
# 2.replace:如果表已经存在,删除表,建立一个新表,将数据插入
# 3.append:如果表存在,将数据插入,如果表不存在创建一个表
#参数index=False:不插入索引index
con.close() #关闭数据库连接
con.closed #查看是否断开
如果你使用IDLE可能会遇到下述问题:
在打开IDLE后使用了pip安装sqlalchemy,插入数据时会遇到AttributeError: 'Engine' object has no attribute 'cursor'
错误。
关闭IDLE,重新打开IDLE,输入之前的代码就OK了。