您的位置:首页 > 数据库 > MySQL

networkx使用笔记(三)之好汉篇MySql(1)

2012-05-12 16:36 225 查看
networkx本身十分强大,但是正所谓一个好汉三个帮,其最得力的助手包括:scipy、numpy和matplotlib,同时在数据转存和清理的过程中,比不可少的还有mysql这个工具了。

1.MySql

第一步,打通Mysql和Python之间的桥梁。其实说白了就是python和mysql之间的使用,网络建模的数据多样复杂,存入mysql方便进一步处理,网上很多对应的MySql在python中的安装(其实也就是库MySQLdb的安装,可以用之前说的easy_install.exe MySQLdb试试;同时之前有一篇博客专门将了一下再windows中安装mysqldb碰到的一些问题),这里就不赘述了,提醒一下,记得下载Navicat,方便查看数据库中的数据和表。毕竟,还是可视化工具用起来舒服。

第二步,python访问mysql。

示例1:基本的数据库连接和插入。说明:利用cursor进行execute一些sql语句,很简单,就像平时写sql语句一样。如果带参数,用python中的列表存储在后面。

import MySQLdb
#建立和数据库系统的连接
conn = MySQLdb.connect(host='localhost', user='root',passwd='longforfreedom')

#获取操作游标
cursor = conn.cursor()
#执行SQL,创建一个数据库.
cursor.execute("create database if not exists python")

#选择数据库
conn.select_db('python');
#执行SQL,创建一个数据表. 说明:这里一会儿''一会儿"",发现在python中这两个基本没差别,都是把字符串括起来,暂时没发现问题
cursor.execute("create table test(id int, info varchar(100)) ")

value = [1,"inserted ?"]

#插入一条记录
cursor.execute("insert into test values(%s,%s)",value);

values=[]

#生成插入参数值
for i in range(20):
values.append((i,'Hello mysqldb, I am recoder ' + str(i)))
#插入多条记录
#数据库的插入中,都是%s,好像这是例行处理,都当作string了,但是传入的参数会通过类型转化为相应的数据库类型,然后存入。这个时候记得注意溢出的问题
cursor.executemany("insert into test values(%s,%s) ",values);
#提交事务,写入数据库。本人在此处犯过大错,执行insert后没有commit,执行完毕程序用navicat打开数据库一看啥都没有,后来才发现,是没有commit的原因
conn.commit()
#关闭连接,释放资源
conn.close()
示例2:数据库的查询

import MySQLdb

conn = MySQLdb.connect(host='localhost', user='root', passwd='longforfreedom',db='python')

cursor = conn.cursor()
#查询test表中id为11的记录,并将记录数目返回给count
count = cursor.execute('select * from test where id=%s',11)

print '总共有 %s 条记录',count

#获取一条记录,每条记录做为一个元组返回
print "只获取一条记录:"
result = cursor.fetchone()
print result
#print 'ID: %s   info: %s' % (result[0],result[1])
print 'ID: %s   info: %s' % result

#获取5条记录,注意由于之前执行有了fetchone(),所以游标已经指到第二条记录了,也就是从第二条开始的所有记录
print "只获取5条记录:"
results = cursor.fetchmany(5)
for r in results:
print r

print "获取所有结果:"
#重置游标位置,0,为偏移量,mode=absolute | relative,默认为relative,
cursor.scroll(0,mode='absolute')
#获取所有结果
results = cursor.fetchall()
for r in results:
print r
conn.close()
相关参考:

http://www.iteye.com/topic/573092

/article/4436254.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: