不管是采用哪种方式都应该先保证创建了目标数据库,即在mysql–data文件夹下有以目标数据库名称命名的子文件夹。且子表应该为以下格式,而不是.sql(未执行命令)文件。
首选方法二
(因为仅SQLAlchemy可连接支持read_sql_table。)
原文链接:/weixin_44274975/article/details/88622221
方法一:
import pymysql
import pandas as pd
# 连接mysql
conn = (host='localhost', user='root',password='123456',
database='testdb',charset="utf8")
sql_1 = "select * from meal_order_detail1"
#利用pandas直接获取数据
data = pd.read_sql(sql_1, conn)
() #前五行
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
conn = (host='你的主机名', user='用户名',password='密码',
database='数据库名称',charset="utf8")
- 1
- 2
方法二(《Python数据分析与应用》P81)
#SQLAlchemy连接MySQL数据库的代码
from sqlalchemy import create_engine
#创建一个MySQL连接器,用户名为root,密码为123456
#地址为127.0.0.1,数据库名称为testdb,编码为UTF-8
engine = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/testdb?charset=utf8')
print(engine)
- 1
- 2
- 3
- 4
- 5
- 6
用read_sql_query,read_sql_table,read_sql读取数据
import pandas as pd
formlist = pd.read_sql_query('show tables',con=engine)
print(formlist)
- 1
- 2
- 3
import pandas as pd
detail1 = pd.read_sql_table('meal_order_detail1',con=engine)
print(len(detail1))
- 1
- 2
- 3
#使用read_sql读取订单详情表
detail1 = pd.read_sql('select * from meal_order_detail1',con= engine)
print('使用read_sql函数+SQL语句读取的订单详情表长度为:',len(detail1))
- 1
- 2
- 3
#使用to_sql方法写入数据(先创建要添加的DataFrame,再在to_sql中指定表名)(相当于MySQL中的insert和create table语句)
df = ({'balance': [10000.000], 'account':
[''], 'charges': [0.0005]})
df.to_sql(name='my_balance', con=engine, if_exists='replace',
index=False, index_label='id')
#查看添加数据后的数据库表格清单
formlist2 = pd.read_sql_query(sql_1,con = engine)
print(formlist2)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
if_existsl可以有三个参数:
fail的意思如果表存在,啥也不做
replace的意思,如果表存在,删了表,再建立一个新表,把数据插入
append的意思,如果表存在,把数据插入,如果表不存在创建一个表!!
来自:/qnloft/article/details/87979937
如果是往新表中添加数据,则在to_sql中的是新表名及 if_exists=‘replace’;
如果是往旧表中添加数据,则在to_sql中是原数据库中存在的表名及 if_exists=‘append’;
自主选择什么情况下使用fail.
#查看新添加进的数据
info3 = pd.read_sql_table('my_balance',con = engine)
print(info3)
- 1
- 2
- 3