Sqlite3
一:Sqlite3
1.连接对象:
•Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。
sqlite3.connect[database[.timeout,其他可选参数])
function:此API打开与SQLite数据库的连接。如果成功打开数据库,则返回一个连接对象。
database:数据库文件的路径,或":memory:",后者表示再RAM中创建临时数据库
timeout:指定连接在引发异常之前等待消失得到时间,默认为5.0秒
2.cursor()
cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意
connection.cursor([cursorClass])
3.对象方法
A.connection对象的方法
connect.cursor() 返回游标对象
connect.execute(sql[,parameters]) 创建中间游标对象执行一个sql命令
connect.executemany(sql[,parameters]) 创建中间游标对象执行一个sql命令
connect.executescript(sql_scripe) 创建中间游标对象,以脚本的形式执行sql命令
connect.total_changes() 返回自打开数据库以来,已增删改的行的总数
connect.commit() 提交当前事务,不使用时为放弃所做的修改,即不保存
connect.rollback() 回转自上次调用commit()以来所做的修改,撤销
connect.close() 断开数据库连接
B.cursor对象的方法
cursor.execute(sql[,parameters]) 执行一个sql命令
cursor.executemany(sql,seq_of_parameters) 对seq_of_parameters中的所有参数或映射执行一个sql命令
cursor.executescript(sql_script) 以脚本的形式执行多个sql命令
cursor.fetchone() 获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None。
cursor.fetchmany ([size=cursor.arraysize]) 获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。size指定特定行数。
cursor.fetchall() 获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表
二:db文件
a.db+学号
"""
Created on Wed May 29 16:03:52 2019
"""
# -*- coding: utf-8 -*-
"""
Created on Tue May 28 21:08:09 2019
@author: asus
"""
import sqlite3
import openpyxl
lists=sqlite3.connect('27.db')
c=lists.cursor()
c.execute('''CREATE TABLE paim("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化"
)''')
listinsheet=openpyxl.load_workbook(r'C:/Users/asus/python/新建文件夹/University_Rank.xlsx')
datainlist=listinsheet.active #获取excel文件当前表格
data_truck=('''INSERT INTO paim("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''')
for row in datainlist.iter_rows(min_row=2,max_col=15,max_row=datainlist.max_row):
#使excel各行数据成为迭代器
cargo=[cell.value for cell in row]
c.execute(data_truck,cargo)
for row in c.execute('SELECT * FROM paim ORDER BY "序号"'):
print(row)
lists.commit()
lists.close()
b.2018科研质量
"""
Created on Tue May 28 21:08:09 2019
@author: 27
"""
import sqlite3
import openpyxl
lists=sqlite3.connect('27.db')
c=lists.cursor()
c.execute('''CREATE TABLE z("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化"
)''')
listinsheet=openpyxl.load_workbook(r'C:/Users/asus/python/新建文件夹/University_Rank.xlsx')
datainlist=listinsheet.active #获取excel文件当前表格
data_truck=('''INSERT INTO z("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''')
for row in datainlist.iter_rows(min_row=2,max_col=15,max_row=datainlist.max_row):
#使excel各行数据成为迭代器
cargo=[cell.value for cell in row]
c.execute(data_truck,cargo)
c.execute('SELECT * FROM z WHERE "学校名称"="广东技术师范学院"')
r = c.fetchall()
print(r)
lists.commit()
lists.close()
c.将广东省的学校进行排名
import sqlite3
import openpyxl
lists=sqlite3.connect('27.db')
c=lists.cursor()
c.execute('''CREATE TABLE zeng("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化"
)''')
listinsheet=openpyxl.load_workbook(r'C:/Users/asus/python/新建文件夹/University_Rank.xlsx')
datainlist=listinsheet.active #获取excel文件当前表格
data_truck=('''INSERT INTO zeng("序号","排名","学校名称","省市","总分","生源质量","培养结果","社会声誉","科研规模","科研质量","顶尖成果","顶尖人才","科技服务","成果转化","学生国际化") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)''')
for row in datainlist.iter_rows(min_row=2,max_col=15,max_row=datainlist.max_row):
#使excel各行数据成为迭代器
cargo=[cell.value for cell in row]
c.execute(data_truck,cargo)
c.execute('SELECT * FROM zeng WHERE "省市"="广东省" ORDER BY "科研质量"')
r = c.fetchall()
print(r)
lists.commit()
lists.close()