SQlite在Python中基本操作

import sqlite3

#创建/打开数据库需指定数据库路径,如果数据库存在则打开。不存在则创建一个新的数据库
con = sqlite3.connect(r'D:\数据库\SQLite\test.db')
"""
connect 返回 con 对象有以下几个方法:
cursor() 创建一个游标对象
commit() 事务提交
rollback() 事务回滚
close() 关闭数据库连接
"""

#创建游标对象
cur = con.cursor()
"""
游标对象有以下方法支持数据库操作:
excute() 执行 sql 语句
executemany() 用来执行多条 sql 语句
close() 关闭游标
fetchone() 从结果中取一条记录,并将游标指向下一条记录
fetchmany() 从结果中取多条记录
fetchall() 从结果中取出所有记录
scroll() 用于游标滚动
"""

#游标对象创建表
cur.execute('create table person (id integer primary key,name varchar(20),\
            age integer)')

#插入数据,两种方法
#一:直接构造一个插入 SQL 语句,但这种做法非常不安全,容易导致 SQL 注入
data = "0,'zjk',20"
cur.execute('insert into person values (%s)' % data)

#二:使用占位符“?”来规避这个问题
cur.execute('insert into person values (?,?,?)',(1,'aa',20))

#还可以使用 excutemany() 执行多条 sql 语句,比循环执行效率高
cur.executemany('insert into person values (?,?,?)',[(3,'jcak',15),
                                                     (4,'kk',19)])

#插入后都不会立即生效,要进行提交
con.commit()

#如果出现错误,回滚为原来的状态
con.rollback()

#查询数据
"""
fetchall:获取所有数据,返回一个二维列表
fetchone:获取其中一个结果,返回元组
"""
cur.execute('select * from person')
res = cur.fetchall()
for line in res:
    print(line)
print()

cur.execute('select * from person')
res = cur.fetchone()
print(res)
print()

#修改和删除数据
cur.execute('update person set name=? where id=?',('rose',1))
cur.execute('delete from person where id=?',(0,))
con.commit()

#查看修改以后的结果
cur.execute('select * from person')
res = cur.fetchall()
for line in res:
    print(line)
print()

#执行完关闭游标
con.close()

#关闭数据库
con.close()

"""
插入或修改中文数据时,记得在中文字符串之前加上“u”
"""





猜你喜欢

转载自blog.csdn.net/zjkpy_5/article/details/89057424
今日推荐