python与sql的交互

python爬数据后需要存储数据,才能更好的去分析数据。这就需要用到数据库连接了。

现在流行使用的mysql和一些基于内存的高效的key-value形式的非关系型数据库,如redis等。

今天现在讲讲mysql和python的数据库连接交互。

 1. 在python中导入模块mysql-connector-python。

        可以在自己的控制台或者对应的python解释器中输入以下代码,这里使用的是全局安装

pip install mysql-connector-python  

注意:有些安装了Ancona的使用者在点击terminal时会默认打开对应的ancona环境,Ancona和python解释器对包的下载可以查看以下文章:

创建一个爬虫项目--bai du-优快云博客https://blog.youkuaiyun.com/weixin_61099555/article/details/146252154?spm=1001.2014.3001.5502

2.导入模块并创建连接和创建游标

2.1导入模块

import mysql.connector #导入模块

2.2 创建连接

   这里有两种方法,都一样 。

方法1:先讲参数用键值对的方式放入字典中,然后将字典用关键字参数(**xxx,属于可变参数的一种,给0或者多个)的方式传参

          

db_config = {
    "host" : "localhost",
    "port" : 3306,
    "user"  : "root",
    "password" : "haol",
    "db" : "food"
}
connnect = mysql.connector.connect(**db_config)

方法2:直接用键值对方式传参 

                

2.3创建游标对象

#创建游标
cursor = connnect.cursor()

 3. 使用方式

3.1创建数据库和表

#创建数据库
sql = "create database food"
cursor.execute(sql)

# 创建表
sql = "create table customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))"
cursor.execute(sql)

3.2插入数据

        插入单条数据,用execute,但是数据要用元组(即 元组名 = (元素1,元素2。。。))保存,若你要传入的数据只有一个,也用元组保存,但形式为  元组名 = (元素1,) 这个末尾逗号一定要存。 对于修改和插入和删除数据,要使用commmit提交事务。

#插入数据
sql = "insert into customers (name,address) values (%s,%s)"
# 单独传递一组数据,数据要是元组
value = ("222","好帅")#数据用元组保存
cursor.execute(sql, value)
connnect.commit()  #对于修改和插入数据,要使用commmit提交事务

        插入多条数据,使用executemany,但是数据data 参数应该是一个列表(或其他可迭代对象),其中每个元素都是一个元组(tuple)或字典,与 SQL 语句中的占位符或命名占位符相对应。

        建议:data外部用列表[],内部用元组(),有几个参数,则元组内部要有几个元素。

#插入数据
sql = "insert into customers (name,address) values (%s,%s)"
#传递多组数据,数据要是可迭代对象
data = [
    ("wwl 1", "地址 1"),
    ("wwl 2", "地址 2"),
    ("wwl 3", "地址 3"),
    ("wwl 4", "地址 4")
]
cursor.executemany(sql, data)  # 使用 executemany 插入多条数据
# 对于修改数据的,要提交到数据库
connnect.commit()

        execute对于 SELECT 语句,这个返回值是查询结果集中的行数。对于 INSERTUPDATEDELETE 语句,这个返回值是被修改(插入或删除)的行数。 executemany返回一个整数,表示成功执行的语句数量。

 3.3更新数据

#更新数据
sql = "update customers set address = %s where id = %s"
value = ("11","2")
cursor.execute(sql,value)
connnect.commit()

 3.4删除数据

#删除数据
sql = "delete from customers where id  = %s"
value = ("2",) #元组数据就一个时,逗号不能省略
cursor.execute(sql,value)
connnect.commit()

3.5查询数据

         其他一样,但是查询语句不用commit,且执行后返回的整数值只是查询的函数,要获取查询的数据要用fetchall(fetchall()方法返回一个列表其中每个元素都是一个元组(tuple),代表查询结果集中的一行。)和fetchone。

#查询数据
sql = "select * from customers"
cursor.execute(sql)
print(cursor.fetchall())#拿去数据


# 查询数据方法
 def select_data(self, sql, data):
     try:
         self.cursor.execute(sql, data)
         return self.cursor.fetchall()
     except Exception as e:
         raise e

4.关闭游标和关闭数据 

#关闭游标
cursor.close()
#关闭链接
connnect.close()

ok了,剩下点去学点mysql就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值