mydb mysql 返回0_Pandas处理MySQL数据

背景知识视频教程

Pandas操作数据 - 国外课栈​viadean.com
69073adab515a9eea7cdb2f3b136fd91.png
Python中使用Pandas教程 - 国外课栈​viadean.com
278a4ffc01548f52f680c219ffff0ff7.png
MySQL进行数据分析-SQL初学者数据库 - 国外课栈​viadean.com
1d664404b5998a9534f2afd2c37d8d43.png

使用pyodbc

我们将使用sakila数据库,MYSQL的示例

借助pyodbc库(您也可以使用MYSQLDB库),我们可以创建到数据库的连接字符串:

#Connection to MYSQL Server
import pyodbc

mydb = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=sakila; UID=root; PASSWORD=12345;")

注意:要使用PYODBC库,您需要为使用的数据库系统安装一个有效的ODBC连接器

我们可以做的整洁的事情之一是使用python格式化功能,通过提示用户输入用户名和密码来为连接字符串提供参数-避免显式输入密码:

user = input('Provide user: n')
pwd = input('Provide password: n')
mydb = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=sakila; UID=%s; PASSWORD=%s;" % (user, pwd))

注意,user和pwd将如何替换连接字符串中的%s,使其等效于第一个示例。

要使用pyodbc查询数据库,只需创建一个游标并执行所需的任何查询。 在示例中,我们将从电影数据库中选择“标题和发行年份”(无需显式数据库名称,因为我们在连接中仅与之连接):

cursor = mydb.cursor()
cursor.execute('select title, release_year from film')

在运行查询之后,我们可以使用以下方法获得结果:

cursor.fetchall()

但是有一个警告,cursor.fetchall()返回Python列表,而不是存储表格数据的最有效/用户友好的方法。

#Movie name and title returning from query list
[('ACADEMY DINOSAUR', 2006),
('ACE GOLDFINGER', 2006),
('ADAPTATION HOLES', 2006),
('AFFAIR PREJUDICE', 2006),
('AFRICAN EGG', 2006)]

我们可以使用以下命令将此对象转换为pandas DataFrame(df):

movies_release_year = pd.DataFrame([tuple(t) for t in cursor.fetchall()])

如果检查Movies_release_year的dataframe,则该对象看起来很奇怪,因为它没有有关该表的列名或其他元数据。

幸运的是,pandas为我们提供了一种在基础查询中将SQL表转换为DataFrames的巧妙方法-输入pandas read_sql_query方法:

movies_release_year = pd.read_sql_query('select title, release_year from film', mydb)

如果您使用movies_release_year.columns和movies_release_year.index检查movies_release_year的对象元数据,则会得到以下输出:

#For columns
Index(['title', 'release_year'], dtype='object')
#For row indexes
RangeIndex(start=0, stop=1000, step=1)

现在,列名正确显示,我们可以从对象数据框中使用movies_release_year [“ title”]或movies_release_year.title来调用它们。SQL等效于“select title from film”,但是行索引有些麻烦,自然,我们的查询没有读取“主键/索引”。 Pandas dataframe索引函数类似于SQL表索引,并且要显式索引的列,我们可以简单地将参数传递给read_sql_query:

movies_release_year = pd.read_sql_query('select film_id, title, release_year from film', mydb, index_col = 'title')

使用Pandas将MySQL数据库加载到BigQuery中

使用Flask将Pandas dataframe(MySQL数据)转换为CSV

加快批量插入数据库的速度

Pickle MySQL表数据

使用SQLAlchemy将Pandas连接到数据库

使用Pandas展平JSON请求

Pandas处理MySQL数据 - 国外课栈​viadean.com
ea2be31fce6b432bd09a15e0bc8585ac.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值