Python与Mysql之间的操作MySQLdb

MySQLdb是python用于连接并与mysql交互的模块,基本用法,总结如下:

1. conn = MySQLdb.connect(host = 'localhost' / '127.0.0.1', user='root', passwd=" ", db='dbname', port = 3306,...)

2. cursor = cur.cursor()# 获得游标

3. cursor.execute(sql, val)  # 执行数据库操作(包括查询,插入,更新,删除等)

注意:不是最新MysqL版本,在对数据库操纵完后,需要添加"conn.commit()" 提交输入语句,否则数据库不能更新。

4. cursor.executemany(sql, val)  # 同时执行多条语句

5. conn.select_db('dbname')# 选择一个数据库

6. data = cursor.fetchall(), cursor.fetchmany(), cursor.fetchone()# 执行完execute后,获取数据, data是以元组or列表类型

举例:

#coding=utf-8
'''
哈尔滨工程大学
'''
from sklearn import preprocessing
import numpy as np

# fetch data from mysql
import MySQLdb
conn = MySQLdb.connect(host='localhost', user='root', passwd='*****', port = 3306)
cursor = conn.cursor()

# 创建数据库python_test
sql = 'create database if not exists python_test'
cursor.execute(sql)

# 选择该数据库
conn.select_db('python_test')

# 创建一个数据表test
sql = 'create table if not exists test(name varchar(20), age int(4))'
cursor.execute(sql)

# 插入一条记录
sql = "insert into test(name, age) values (%s, %s)" 
value = ("zhouy", 20)
try:
    cursor.execute(sql, value)
    print 'insert complete!'
except Exception, e:
    print e
conn.commit()       # 只有提交更新,才能将插入数据写入数据库中

# 同时插入多条记录
sql = "insert into test values (%s, %s)"
values = []     # 列表对象,dir()函数可以查看列表可以的操作
# 生成参数值
for i in range(10):
    values.append(("Beijing" + str(i), i+10))    # 列表中每一个‘元素’(一条记录)是元组(tuple)类型

# 插入操作
try:
    cursor.executemany(sql, values)
    print '多条记录插入完成!'
except Exception, e:
    print e
conn.commit()       # 提交事务

# 查询数据
sql = 'select * from test'
cursor.execute(sql)
allData = cursor.fetchall()
# allData是一个二维列表(其中每一行是元组)
if allData:
    for rec in allData:
        print rec[0], rec[1]

cursor.close()
conn.close()
注: 如果需要将array或matrix类型的数据存储mysql中,需要首先将array/matrix转化为list形式,然后插入数据库中,举例:
values_array = np.array(values)
#n1 = cursor.executemany(sql, values_array)       # 不会执行插入操作,提示错误(因为第二个参数是数组类型)
# 但是转化为list类型,可以写入数据库
val = []
for i in range(np.shape(values_array)[0]):      # 转化为list(tuple)类型
    val.append(values_array[i,:])
n2 = cursor.executemany(sql, val)
print 'n2:', n2






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值