美文网首页
Python操作mysql库(sqlalchemy)

Python操作mysql库(sqlalchemy)

作者: 杜七 | 来源:发表于2016-07-23 17:25 被阅读502次
  • Author: 杜七
  • Date:2016.05.19

MySQLdb

  • 基本的使用
    `
    import MySQLdb

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

cursor = conn.cursor()
count = cursor.execute('select * from test')

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()
`

  • 解决返回的元组问题

`默认mysqldb返回的是元组,这样对使用者不太友好,也不利于维护
**下面是解决方法
**
import MySQLdb
import MySQLdb.cursors

conn = MySQLdb.Connect (

host = 'localhost', user = 'root' ,

passwd = '', db = 'test', compress = 1,

cursorclass = MySQLdb.cursors.DictCursor, charset='utf8')
// <- important

cursor = conn.cursor()
cursor.execute ("SELECT name, txt FROM table")
rows = cursor.fetchall()
cursor.close()
conn.close()

for row in rows:
print row ['name'], row ['txt'] # bingo!

another (even better) way is:

conn = MySQLdb . Connect (
host = ' localhost ', user = 'root' ,
passwd = '', db = 'test' , compress = 1)
cursor = conn.cursor (cursorclass = MySQLdb.cursors.DictCursor)

...

results by field name

cursor = conn.cursor()

...

...results by field number

`

相关文章

网友评论

      本文标题:Python操作mysql库(sqlalchemy)

      本文链接:https://www.haomeiwen.com/subject/cyfgrttx.html