数据库操作

一、引入pymysql

 import pymysql

二、获取与数据库的连接

两种方法

1.连接数据库

import pymysql

conn = pymysql.connect(
                host="*.*.*.*",#数据库IP
                user="*",#数据库的用户名
                password="*",#密码
                db="*",#数据库名
                port=3306,#数据库端口
                charset="utf8",#字符集
                autocommit=True #自动提交
                )#连接数据库

2.连接数据库

import pymysql

mysql_info = {
    "host":"*.*.*.*",#数据库IP
    "user":"*",#数据库的用户名
    "password":"*",#密码
    "db":"*",#数据库名
    "port":3306,#数据库端口
    "charset":"utf8",#字符集
    "autocommit":True #自动提交
}
def execute_sql(sql,more=True,db_info=None):
    if db_info:
        conn = pymysql.connect(**db_info)
    else:
        conn = pymysql.connect(**mysql_info) 

三、执行SQL语句和存储过程

1.建立游标,获得一个cursor对象,

cursor = conn.cursor(pymysql.cursors.DictCursor) #建立游标

2.接下来,我们会使用cursor提供的方法来进行工作.,这些方法包括两大类

1.执行命令

callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集

cursor.execute('insert into students (name,phone,age,sex) values ("华华","13712312321",18,"女");' )#
cursor.execute('update students set name = "小白" where id = 1')#
cursor.execute("select * from students;") #
cursor.execute('select * from students where phone="13712312321";'#
cursor.execute("show tables;")#查看当前所有表
conn.commit() #提交,若连接数据时已设置自动提交,则不需要执行再次执行提交,否则需要提交才能真正执行sql语句

2.接收返回值

fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一 行移动value条.

result = cursor.fetchone()#获取单条
result = cursor.fetchmany(5) #获取n条
result = cursor.fetchall()#获取sql执行的结果
print(result)

for line in cursor:#表数据比较多的时候就用它
    print(line)

print(cursor.description) #表的字段信息

四、关闭数据库连接

cursor.close()#关闭指针对象
conn.close()#关闭连接对象

 

posted @ 2021-01-24 11:10  chenghuahua  阅读(61)  评论(0)    收藏  举报