码迷,mamicode.com
首页 > 数据库 > 详细

python——数据库操作

时间:2019-06-26 12:03:00      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:游标   pre   dict   必须   commit   connect   uri   else   one   

一、mysql模块:pymysql

链接数据库需要的信息:ip port user password db

1、注意:

连接数据库,port必须是int型,字符编码是utf8,不能是utf-8,password必须是字符串,db是选择数据库,加上autocommit=True,每次修改数据库就不用写conn.commit()

2、步骤:

  (1)建立连接:      

conn=pymysql.connect(host=118.22.3.21,user=nn,port=3306,db=student,password=123456,charset=utf8,autocommit=Ture)  

  (2)建立游标:执行SQL

# cur=conn.cursor()   #游标类型默认是元组
cur=conn.cursor(pymysql.cursors.DictCursor)
#用pymysql.cursors.DictCursor  游标类型返回类型是字典,多条结果时,返回的是二维字典

  (3)执行:先execute(),再fetchall()    

sql="insert app_student ( `name`, `sex`, `age`, `addr`, `grade`, `phone`, `gold`) values ( ‘hanmin‘, ‘男‘, ‘18‘, ‘河南省济源市北海大道32号‘, ‘天蝎座‘, ‘18611229999‘, ‘100‘);"
sql2="select * from app_student where name=‘hanmin‘"
print(cur.execute(sql2))   # #execute()只能执行语句,不能获取结果
print(cur.fetchall)#只是获取结果,取到所有的结果,结果类型是list
print(cur.fetmany(3)) #从返回结果中取几条
print(cur.fetchone())  #,ur.fetchone(),只取一条返回结果。返回是数组或字典,如果可以确定返回结果只有1个的时候,就用fetchone(),使用fetchone()先注释掉fetchall,否则会取不到

  (4)提交:

conn.commit()  #如果有修改数据库的话,需要commit一下,但是如果在连接数据库时autocommit=True,就无需手动提交

  (5)关闭连接

cur.close()  #先关游标
conn.close()   #再关连接。使用完数据库一定要断开连接,不然会占数据库

 

二、操作数据库的函数,可以直接拿来使用

import pymysql
def op_mysql(host,user,password,db,sql,port=3306,many_tag=False):
    conn=pymysql.connect(host=host,user=user,password=password,db=db,port=port,charset=utf8,autocommit=True)
    cur=conn.cursor(pymysql.cursors.DictCursor)
    cur.execute(sql)
    if many_tag:
        result=cur.fetchall()
    else:
        result=cur.fetchone()

    cur.close()
    conn.close()

 

python——数据库操作

标签:游标   pre   dict   必须   commit   connect   uri   else   one   

原文地址:https://www.cnblogs.com/hancece/p/11089076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!