python——数据库操作

一、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()

 

posted @ 2019-06-26 11:53  4jd121de2gf4e2sa5d  阅读(231)  评论(0编辑  收藏  举报