MySQL与python交互

一) 交互类型

-1. 安装引入模块

  • 安装mysql模块(Ubuntu) : sudo apt-get install python-mysqldb
  • 在文件中引入模块 : import MySQLdb

-2. Connection对象

  • 用于监理与数据库的连接

    • 创建对象: 调用connect()方法 : conn = connect(参数列表)
    • 参数host: 连接的mysql主机, 如果本机是'localhost'
    • 参数port: 连接的mysql主机的端口, 默认是3306
    • 参数db: 数据库的名称
    • 参数passwd: 连接的密码
    • 参数charset: 通信采用的编码方式, 推荐使用utf8
  • 对象的方法 :

    • close()关闭连接
    • commit()事务, 所以需要提交才会生效
    • commit()事务, 放弃之前的操作
    • cursor()返回Cursor对象, 用于执行sql语句并获得结果
    1. Cursor对象

    执行sql语句
    创建对象 : 调用Connection对象的cursor()方法 cursor1=conn.cursor

    • 1> 对象的方法 :
      • close()关系
      • execute(operation [, parameters ])执行语句, 返回受影响的行数
      • fetchone()执行查询语句时, 获取查询结果集的第一个行数据, 返回一个元组
      • next()执行查询语句时, 获取当前行的下一行
      • fetchall()执行查询语句时, 获取结果集的所有行, 一行构成一个元组, 再将这些元组装如意个元组返回
      • scroll(value[,mode])将行指针移动到某个位置
        • mode: 表示移动的方式
        • mode的默认值为relative, 表示基于当前行移动到value, value为正则向下移动, value为负则向上移动
        • mode的值为absolute, 表示基于第一条数据的位置, 第一条数据的位置为0
      • 2> 对象的属性
        • rowcount : 只读属性, 表示最近一次execute()执行后受影响的行数
        • connection获得当前连接对象

二) 增改删

-1. 增加:

  • 增加testInsert.py文件, 向学生表中插入一条数据
#encoding=utf-8
import MySQLdb
try:
  conn=MySQL.connect(host='localhost', port=3306, db='test1', user='root', passwd='1', charset='utf8')
  cs1 = conn.cursor()
  sql = 'insert into students(sname) values('adam')'
  count = cs1.execute(sql)
  print count
  conn.commit()
  cs1.close()
  conn.close()
except Exception,e:
  print e.message

-2. 修改:

  • 创建testUpdate.py文件, 更新学生表的一条数据
#encoding=utf-8
import MySQLdb
try:
  conn=MySQL.connect(host='localhost', port=3306, db='test1', user='root', passwd='1', charset='utf8')
  cs1 = conn.cursor()
  sql = 'update students set sname='jack' where id = 1'
  count = cs1.execute(sql)
  print count
  conn.commit()
  cs1.close()
  conn.close()
except Exception,e:
  print e.message

-3. 删除:

  • 删除testDelete.py文件, 删除学生表的一条数据
#encoding=utf-8
import MySQLdb
try:
  conn=MySQL.connect(host='localhost', port=3306, db='test1', user='root', passwd='1', charset='utf8')
  cs1 = conn.cursor()
  sql = 'delete from students where id = 1'
  count = cs1.execute(sql)
  print count
  conn.commit()
  cs1.close()
  conn.close()
except Exception,e:
  print e.message

-4. sql语句参数化:

  • 删除testInsertParam.py文件, 向学生表中插入一条数据(注意数据库安全-(攻击方式叫做: sql录入))
#encoding=utf-8
import MySQLdb
try:
  conn=MySQL.connect(host='localhost', port=3306, db='test1', user='root', passwd='1', charset='utf8')
  cs1 = conn.cursor()
  sname = raw_input("请输入学生姓名 : ")
  params = [sname]
  sql = ('insert into students(sname) values(%s)', params)
  count = cs1.execute(sql)
  print count
  conn.commit()
  cs1.close()
  conn.close()
except Exception,e:
  print e.message

-5. 其他语句:

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

推荐阅读更多精彩内容

  • 1、安装mysql模块 python2 ubuntu16.4环境下安装 python3 ubuntu16.4环...
    流光汐舞阅读 392评论 0 0
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,207评论 4 16
  • “欧西里斯神啊请您庇佑我让我再次拥有来生。赫拉斯神啊请您赐予我勇气和战斗力让我再次为保护我的疆土而战。阿蒙神啊请您...
    7虞枫之恋阅读 204评论 0 0