python和MySQL的基础使用和数据的插入导出

一.基础使用

第三方库pymysql

除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库:pymysql来完成对MySQL数据库的操作。

安装

创建到MySQL的数据库链接

具体代码如下

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(host='localhost',# localhost表示自己的电脑user='root',password='685014',#这个密码是当时下载mysql自己设置的用户密码port=3306#端口默认是3306
)
#打印MySQL数据库软件信息
print(conn.get_server_info())

输出结果

执行SQL语句

演示

执行非查询性质的SQL语句:

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(host='localhost',# localhost表示自己的电脑user='root',password='685014',#这个密码是当时下载mysql自己设置的用户密码port=3306#端口默认是3306
)
#打印MySQL数据库软件信息
print(conn.get_server_info())
#执行非查询性质的SQL语句
#获取游标对象
cursor=conn.cursor()
conn.select_db("py_sql")#选择数据库
#使用游标对象,执行SQL语句
cursor.execute("create table test_pymysql(id int,info varchar(255));")
#关闭链接
conn.close()

结果

注意,在用python写SQL执行语句时,最后的‘;’分号可以不写

执行查询性质的SQL语句:

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(host='localhost',# localhost表示自己的电脑user='root',password='685014',#这个密码是当时下载mysql自己设置的用户密码port=3306#端口默认是3306
)
#执行查询性质的SQL语句
#获取游标对象
cursor=conn.cursor()
conn.select_db("world")#选择数据库
#使用游标对象,执行SQL语句
cursor.execute("select * from student")
#获取查询结果
result:tuple=cursor.fetchall()
for i in result:print(i)

结果

小结

1.Python中使用什么第三方库来操作MySQL?如何安装?

使用第三方库为:pymysql

安装:pip install pymysql

2.如何获取链接对象?

  • from pymysql import Connection导包

  • Connection(主机,端口,账户,密码)即可得到链接对象·链接对象.close()关闭和MySQL数据库的连接

3.如何执行SQL查询

通过连接对象调用cursor()方法,得到游标对象

  • 游标对象.execute()执行SQL语句

  • 游标对象.fetchall()得到全部的查询结果封装入元组内

二.数据插入

思考

如图所示代码,经过执行是无法将数据插入到数据表student中的。这是为什么呢?

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即,需要通过代码“确认”这种更改行为。

通过链接对象.commit()即可确认此行为。

自动commit

如果不想手动commit确认,可以在构建链接对象的时候,设置自动commit的属性。

如图代码进行设置,即可自动提交无需手动commit了。

from pymysql import Connect
#获取到MySQL数据库的连接对象
conn=Connect(host="localhost",user="root",password="685014",port=3306,autocommit=True)

小结

1.什么是commit提交?

pymysql库在执行对数据库有修改操作的行为时,是需要通过链接对象的commit成员方法来进行确认的。只有确认的修改,才能生效。

  1. 如何自动提交呢?

三.实例操作

    • 利用python把数据导入MySQL中

这两份数据,一份是json数据,一份是普通的文本

我在之前文章中就处理过这两份文件,需要了解的可点击“python面向对象做数据分析实例”所用的数据集也在这篇文章里面

这次我们就直接导入

操作

本次需求开发我们需要新建一个数据库来使用,数据库名称:py_sql基于数据结构,可以得到建表语句:

代码

#实例1 将数据导入mysql中
from shujufenxi import file_define
from shujufenxi import data_define
from pymysql import Connecttext_file_reader= file_define.TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader= file_define.JsonFileReader("D:/2011年2月销售数据JSON.txt")jan_data:list[data_define.Record]=text_file_reader.read_data()
fed_data:list[data_define.Record]=json_file_reader.read_data()
#把两个月的数据合并为一个list来存储
all_data:list[data_define.Record]= jan_data + fed_data#获取到MySQL数据库的连接对象
conn=Connect(host="localhost",user="root",password="685014",port=3306,autocommit=True)
#获取游标对象
cursor=conn.cursor()
#选择数据库
conn.select_db("py_sql")
#组织SQL语句
for record in all_data:sql=f"insert into orders(order_data,order_id,money,province)" \f"values('{record.data}','{record.order_id}','{record.money}','{record.province}')"#执行SQL语句cursor.execute(sql)#关闭连接
conn.close()

2.利用python把数据从MySQL中导出

法一

#第一种方法(输出元组)
from pymysql import Connectconn=Connect(host="localhost",user="root",password="685014",port=3306
)cursor=conn.cursor()conn.select_db("py_sql")cursor.execute("select  order_data,order_id,money,province  from orders limit 12")
record=cursor.fetchall()
for i in record:print(i)
print(record)

结果是

法二

#实例2 把数据导出(这个是老方法,会报错但是也可以正常输出)
from pymysql import Connect
import pandas as pd
#获取到MySQL数据库的连接对象
conn=Connect(host="localhost",user="root",password="685014",port=3306,autocommit=True)
#选择数据库
conn.select_db("py_sql")
#获取游标对象
cursor=conn.cursor()
#组织SQL语言
sql=f"select order_data,order_id,money,province from orders limit 12;"
# #执行sql语言record=pd.read_sql(sql,conn)
print(record)

结果是

法三(推荐使用)

#新方法 推荐使用
import sqlalchemy
import pandas as pdconn=sqlalchemy.create_engine("mysql+pymysql://root:685014@localhost:3306/py_sql")
sql=f"select order_data,order_id,money,province from orders limit 12;"#这里那个f写不写都可以record=pd.read_sql(sql,conn)
print(record)

结果是

注:实例所用数据集请点击“python面向对象做数据分析实例”


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部