从Python操纵SQL的新手指南
数据科学本质上适用于从数据中获取见解并进行分析以得出结论。众所周知,大多数数据都存在于数据库中,而SQL仅是帮助我们与数据库进行通信的语言。
因此,学习SQL for Data Science更是在该领域取得成功的前提。
下面的文章讨论了如何通过Python管理SQL,这是一项非常强大的技能。
我使用的工具: Anaconda命令提示符,Sublime文本编辑器,操作系统:Windows 10,SQL命令行
您需要设置一个虚拟环境。 为什么?
顾名思义,虚拟环境与实际的Python环境不同。
要操作SQL,您将需要在某些软件包中安装或进行更改。虚拟环境将确保这些更改不会影响其他项目,主要的python安装,甚至不会影响在同一台计算机上工作的人员。
因此,虚拟环境为您提供了Python副本,因此您可以自由地进行更改,安装或卸载软件包。
创建虚拟环境
(我在Anaconda命令提示符上执行了以下命令:)
conda create —名称为myenv (此处myenv是您的虚拟环境的名称)
要激活此环境,请使用-
康达激活myenv
##这将创建一个目录,即myenv
来自Python的SQL-激活虚拟环境
请注意激活环境时,(基本)如何变为(myenv)。
同样,要停用此环境,请使用
康达停用myenv
安装所需的软件包:
运行以下命令:
pip安装mysql-connector-python
已安装所需的软件包。
我们将在Sublime Text Editor中编写用于执行SQL查询的python代码。要在命令提示符下执行Sublime Text python文件,您需要创建一个环境变量。如果您不知道该怎么做,可以检查此。
现在,当您在命令提示符下键入subl时,它将从那里打开Sublime Text Editor。创建一个新的python文件。我已将文件命名为HelloWorld.py
运行测试命令print(“ Hello World”)以确保文件正在执行。
连接到MySQL
导入mysql.connector
db = mysql.connector.connect(host ='localhost',
user ='您的用户名',
passwd ='您的通行证',
database ='fifa19',
port ='3307',
auth_plugin ='mysql_native_password')
打印(db)
在这里,
1.在参数user和passwd中键入您的MySQL用户名和密码。
2.数据库将具有您要使用的数据库的名称。
3. MySQL端口是3307。如果端口是3306,则无需显式指定。
4. auth_plugin ='mysql_native_password':指定此参数以避免身份验证错误。
5. pprint
这将创建一个MySQL.connector.connection对象
来自Python的SQL-MySQL Connector
查看数据库中的数据
我们使用游标方法创建一个游标对象,该游标对象用于执行与MySQL数据库通信的语句。
以下代码在文本编辑器中编写。
crs = db.cursor()
crs.execute(“从玩家限制10中选择*”)
结果= crs.fetchall()
pprint(结果)
在这里,
1. crs是我的光标对象的名称。
2. execute()接受SQL查询作为参数并执行给定的查询。
3.结果变量存储fetchall()方法的结果集。
4. fetchall() 方法以元组的形式返回查询的结果集。
5. pprint()以更具格式和可读性的方式打印输出。[您可以通过以下方式导入pprint:从pprint导入pprint ]
通过命令提示符保存并运行文件。输出将如下所示:
来自Python的SQL-查看数据库中的数据
建立表格
在文本编辑器中编写以下代码:
cmd =“创建表联系人(名称Varchar(255),PhoneNo int(12))”
打印(cmd)
crs.execute(cmd)
请注意,我们对游标对象执行所有查询。
保存并在命令提示符下运行文件。这将在数??据库中创建一个名为“ contacts”的表。您可以使用sql命令行进行检查。
插入查询
insert命令的代码如下:
insert_command =“插入联系人(姓名,电话号码)值(%s,%s)”
值=(“ Sejal”,987654321)
crs.execute(插入命令,值)
db.commit()
在这里,每次我们对数据库进行更改时,都必须执行db.commit()。此方法用于确保数据库中的更改是一致的。
运行该文件,您将能够看到数据已添加到表中。您可以使用SQL命令行进行验证。
表
搜索查询
搜索记录的代码如下:
crs.execute(“从国籍=“美国”的球员中选择姓名”)
结果= crs.fetchall()
pprint(结果)
在这里,我们正在寻找国籍为美国的球员的姓名。
输出将如下所示:
搜索查询
删除查询
删除记录的代码如下:
crs.execute(“从联系人中删除”)
db.commit()
请记住,我们使用db.commit()来确保更改反映在数据库中。
文件运行后,您可以看到记录已从数据库中删除。
题库