用jupyter读取mysql中的数据的两种方式

时间:2024-10-27 15:27:40

不管是采用哪种方式都应该先保证创建了目标数据库,即在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

在这里插入图片描述

相关文章