1.1 python连接数据库的几种方式

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


1  使用pandas


导入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)

主要参数介绍如下,详细文档参考http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html

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()不用指定长度。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容