赞
踩
数据库连接对象(Connection Object)主要提供获取数据库游标对象和提交、回滚事务的方法,以及关闭数据库连接。
connect() 函数常用的参数及说明如下表
参数 | 说明 |
---|---|
dns | 数据源名称,给出该参数表示数据库依赖 |
user | 用户名 |
password | 用户密码 |
host | 主机名 |
database | 数据库名称 |
connect = pymysql.connect(host="localhost",
user="user",
password="root",
db="ivps",
charset="utf-8",
cursorclass=pymysql.cursors.DictCursor)
方法名 | 说明 |
---|---|
close() | 关闭数据库连接 |
commit() | 提交事务 |
rollback() | 回滚事务 |
cursor() | 获取游标对象,操作数据库,如执行DML操作,调用存储过程等 |
方法名 | 说明 |
---|---|
callproc(procname,[, parameters]) | 调用存储过程,需要数据库支持 |
close() | 关闭当前游标 |
execute(operation[, parameters) | 执行数据库操作,SQL语句或者数据库命令 |
executemany(operation,seq_of_ params) | 用于批量操作,如批量更新 |
fetchone() | 获取查询结果集中的下一条记录 |
fetchmany(size) | 获取指定数量的记录 |
fetchall() | 获取结果集的所有记录 |
nextset() | 跳至下一个可用的结果集 |
arraysize | 指定使用fetchmany()获取的行数,默认为1 |
setinputsizes(sizes) | 设置在调用execute*()方法时分配的内存区域大小 |
setoutputsize(sizes) | 设置列缓冲区大小,对大数据列(如LONGS和BLOBS)尤其有用 |
与许多其他数据库管理系统不同,SQLite 不是一一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库就是一个文件。SQLite 将整个数据库,包括定义,表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中。Python 就内置了sQLite3, 所以在Python中使用SQLite,不需要安装任何模块,直接使用。
import sqlite3 #导入模块
connect = sqlite3.connect("ces.db") #连接数据库
cursor = connect.cursor() #创建游标
cursor.execute("create table user(id int(10) primary key,name varchar(20))") #执行sql语句
cursor.close() #关闭游标
connect.close() #关闭连接
由于是新增数据,需要使用commit()方法提交事务。因为对于增加、修改和删除操作,
使用commit)方法提交事务后,如果相应操作失败,可以使用rollback()方法回滚到操作之前的状态
import sqlite3 #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("insert into user(id,name) values(1,'我是一号')")
cursor.execute("insert into user(id,name) values(2,'我是二号')")
cursor.execute("insert into user(id,name) values(3,'我是三号')")
cursor.close()
connect.commit() #提交事务
connect.close()
获取查询数据方法如下表
方法名 | 说明 |
---|---|
fetchone() | 获取查询结果集中的下一条记录 |
fetchmany(size) | 获取指定数量的记录 |
fetchall() | 获取结构集的所有记录 |
import sqlite3 #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("select * from user")
result1 = cursor.fetchone()
result2 = cursor.fetchmany(2)
result3 = cursor.fetchall()
print(result1) #得到 (1, '我是一号')
print(result2) #得到 [(1, '我是一号'), (2, '我是二号')]
print(result3) #得到 [(1, '我是一号'), (2, '我是二号'), (3, '我是三号')]
cursor.close()
connect.close()
如果已经打印了result1,那么再次打印的result2中不包含result1的内容
修改cursor.execute("select * from user")为cursor.execute("select * from user where id > ?",(1,))
得出
[(2, '我是二号'), (3, '我是三号')]
即不打印第一行数据
语法:update 表名 set 字段名 = 字段值 where 条件
import sqlite3 #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("update user set name=? where id=?",("我被修改了",1))
cursor.execute("select * from user")
result = cursor.fetchall()
print(result)
connect.commit()
cursor.close()
connect.close()
[(1, '我被修改了'), (2, '我是二号'), (3, '我是三号')]
语法:delete from 表明 where 查询条件
import sqlite3 #导入模块
connect = sqlite3.connect("ces.db")
cursor = connect.cursor()
cursor.execute("delete from user where id=?",(1,))
cursor.execute("select * from user")
result = cursor.fetchall()
print(result)
connect.commit()
cursor.close()
connect.close()
[(2, '我是二号'), (3, '我是三号')]
安装pymysql
pip install pymysql
import pymysql
db = pymysql.connect("localhost","root","root","ces") #分别代表主机地址、用户名、密码、数据库名称
#连接数据库一般以下面的方法为准,不会出错
db = pymysql.connect(host="127.0.0.1",
port=3306,
user="root",
passwd="root",
db="mrsoft",
charset="utf8")
cursor = db.cursor() #创建游标
cursor.execute("select version()") #通过游标查询数据库版本
result = cursor.fetchall() #获取全部查询结果
print(result) #打印查询结果
cursor.close() #关闭游标
db.close() #关闭连接
import pymysql dbmysql = pymysql.connect("localhost","root","root","ces") #分别代表主机地址、用户名、密码、数据库名称 cursor = dbmysql.cursor() #创建游标 cursor.execute("DROP TABLE IF EXISTS book") #如果存在book表则删除 sql = """ create table book( xno int(4) primary key, xname varchar(20) not null, loc varchar(20), index collage_index(xname) )engine=innodb default charset=utf8; """ cursor.execute(sql) cursor.execute("SHOW DATABASES;") #查询数据库所有表名称 result = cursor.fetchall() #获取全部查询结果 dbmysql.commit() print(result) #打印查询结果 cursor.close() #关闭游标 dbmysql.close() #关闭连接
import pymysql
db = pymysql.connect("localhost","root","root","ces")
cursor = db.cursor()
data = [(1,'lihua','dhdt'),
(2,'daming','hd'),
(3,'xiaohong','rrr'),
]
try:
cursor.executemany("insert into book(xno,xname,loc) VALUES (%s,%s,%s)",data)
#cursor.execute("INSERT INTO book(xno,xname,loc) VALUES(1,'lihua','dhdt'),(2,'daming','hd'),(3,'xiaohong','rrr')")
db.commit()
except:
print("发送错误,回滚")
db.rollback()
db.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。