数据存储之MySQL

包的导入:

@python3 import pymysql
@python2 import MySQLdb

基本应用

import pymysql

#建立连接
db = pymysql.connect(host=‘localhost’, port=3306, db=‘test’, user=‘root’, password=‘root’)

#使用cursor()方法 新建游标对象
cursor = db.cursor()

#使用execute()方法执行SQL语句
cursor.execute(“SELECT * FROM teacher”)

#使用fetchall()获取全部数据
data = cursor.fetchall()

#打印获取的的数据
print(data)

#关闭游标和数据库的连接
cursor.close()

详解

pymysql.connect中可接受的参数:
host:主机名或地址
user:用户名
password:密码 简写passwd
database:指定数据库 简写db
port:端口,默认3306
charset:指定字符编码
**kw:关键字参数,用于字典.(*args是非关键字参数,用于元组,必须要在**kwargs前)

cursor其实是调用了cursors模块下的Cursor的类,这个模块主要的作用就是用来和数据库交互的

数据库操作commit()方法:
在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。
execute():提供插入的数据
executemany():用来同时插入多条数据
execute()和executemany()都会返回受影响的行数:
res = cursor.executemany(sql,('jack',))
print(res) #返回受到影响行数
当表中有自增的主键的时候,可以使用print(cursor.lastrowid)来获取最后一次自增的ID

数据插入

# 数据库连接配置信息
config = {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "root",
    "database": "test"
}
db = pymysql.connect(**config)      # 连接数据库
cursor = db.cursor()                # 使用cursor()方法 新建游标对象
sql = "INSERT INTO teacher(name, sex, addr) VALUES(%s, %s, %s)"     # 待执行的sql语句
# cursor.execute(sql)               # 使用execute()方法执行SQL语句
data = [('wanglei', 'male', 'beijing'), ('mulasha', 'female', 'hangzhou')]
cursor.executemany(sql, data)       # cursor.excutemany()同时插入多条数据
db.commit()     # 提交数据
cursor.close()
db.close()

数据库的查询:
fetchone():获取下一行数据,第一次为首行,第二次为第二行,.....
fetchall():获取所有行数据源,只获取一次。tpye(cursor.fetchall) == tuple
用fetchall获取所有行的数据,都被放在一个元组里面,
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
#在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor,
每一行都被生成一个字典放在列表里面,便于理解
fetchmany(4):获取下4行数据
scroll():
cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
相当于seek(),要搭配查询函数使用,其本身并不能显示数据

猜你喜欢

转载自www.cnblogs.com/jian-h/p/11782255.html
今日推荐