python一般和什么数据库连接_1.1 python连接数据库的几种方式

本文介绍了Python连接数据库的两种主要方式:使用pandas的`read_sql`函数和使用PyMySQL库。通过示例详细阐述了如何配置连接参数,执行SQL查询并处理查询结果。还提到了DataFrame的`to_sql`方法,用于将数据写入数据库。
摘要由CSDN通过智能技术生成

在使用python做数据清洗,数据处理等的时候第一步就需要连接数据源,连接数据源又多种多样,这里简单讲一下我最近练习用到的和网上找的python连接数据库的几种方式,并且总结了下来。

1  使用pandas

a686990a3510

导入pandas、pymysql、sqlalchemy

engine = create_engine('mysql://(user):(password)@(host)/(database)?charset=gbk')

举例:

IP地址:122.111.180.131

用户名:data001

密码:data@144

数据库实例名:adventure

engine = create_engine('mysql://data001:data@144@3306/adventure?charset=gbk')

sql_cmd = 'select * from abc'     #选择数据表abc

df = pd.read_sql(sql = sql_cmd , con = engine)

2.使用pymysql

什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,一般需要安装

pip3 install pymysql

import

pymysql

#打开数据库连接

db=pymysql.connect(host='1.1.1.1',port=3306,user='root',passwd='123123',db='test',charset='utf8')

cursor=db.cursor()#使用cursor()方法获取操作游标

sql ="select * from test0811"

cursor.execute(sql)

info = cursor.fetchall()

db.commit()

cursor.close()#关闭游标

db.close()#关闭数据库连接

使用pymysql的connect()方法连接数据库,connect的几个参数解释如下:

host:MySQL服务的地址,若数据库在本地上,使用localhost或者127.0.0.1。如果在其它的服务器上,应该写IP地址。

port:服务的端口号,默认为3306,如果不写,为默认值。

user:登录数据库的用户名

passwd:user账户登录MySQL的密码

db:将要操作的数据库的名字

charset:设置为utf8编码,这样就可以存入汉字没有乱码

注意:除了port=3306不用引号,其它项的值都有用引号括起来

代码中的db就架起了Python和MySQL通信的桥梁,db.cursor()表示返回连接的游标对象,通过游标执行SQL语句。还有几个常用的方法是commit()表示提交数据库修改,rollback()表示回滚,就是取消当前的操作,close()表示关闭连接。

上面讲的是连接对象db的一些方法,游标对象的一些方法也很重要,利用游标对象的方法就可以对数据库进行操作了,游标对象的常用方法如下表:

名称描述

close()  关闭游标,之后游标不可用

execute(query[,args])  执行一条SQL语句,可以带参数

executemany(query,pseq)  对序列pseq中的每个参数执行SQL语句

fetchone()  返回一条查询结果

fetchall()  返回所有查询结果

fetchmany([size])  返回size条查询结果

nextset()  移动到下一条结果

scroll(value,mode='relative')      移动游标到指定行,如果mode='relative',则表示从当前行移动value条,如果mode=‘absolute’,则表示从结果集的第一行移动value条

3.pandas.DataFrame.to_sql

DataFrame.to_sql(name, con, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)

name:输出的表名

con:连接数据库的引擎

if_exists:三种模式{“fail”,“replace”,"append"},默认是"fail"。fail:若表存在,引发一个ValueError;replace:若表存在,覆盖原来表内数据;append:若表存在,将数据写到原表数据的后面。

index:是否将DataFrame的index单独写到一列中,默认为“True”

index_label:当index为True时,指定列作为DataFrame的index输出

dtype:指定列的数据类型,字典形式存储{column_name: sql_dtype},常见数据类型是sqlalchemy.types.INT()和sqlalchemy.types.CHAR(length=x)。注意:INT和CHAR都需要大写,INT()不用指定长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值