一:sqlite操作

SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。

Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。

操作步骤:

1.创建连接(记得导入模块)

import sqlite3
conn = sqlite3.connect("test.db")  #若是文件不存在会自动创建,路径可以是相对,也可以是绝对。这个文件就是相当于一个数据库

2.根据连接获取游标

curs = conn.cursor()

3.根据游标进行操作数据表

curs.execute("""create table info(
uid INTEGER PRIMARY KEY AUTOINCREMENT ,  #注意设置主键,必须是 INTEGER类型
username varchar(),
password varchar()
)
""") curs.execute("""
CREATE INDEX un on info (username)  #创建索引
""")
相关基础

4.进行数据的增删改查


curs.execute("""
INSERT INTO info(username,password) VALUES ("ld","");
""") 删
curs.execute("""
DELETE FROM info WHERE uid > ;
""") 改
curs.execute("""
UPDATE info SET username = "dsad" WHERE uid = ;
""")
查找
info_all = curs.execute("""
SELECT * from info;
""") for row in curs.fetchall():
print(row[],row[],row[])

5.如果我们对数据库进行了增删改修改,原来数据(或者数据表)了,我们需要去提交我们的操作

conn.commit()

6.操作完成,断开游标和数据库连接

curs.close()
conn.close()

二:mysql操作

mysql操作需要我们导入pymysql模块(非内置)。

pip3 install pymysql

(1)其操作步骤和上面sqlite几乎一致

import pymysql

conn = pymysql.connect(host="localhost",user="root",password="root",database="t1")  #可以设置charset编码

cur = conn.cursor()  #设置游标,默认是执行查询后返回元组信息
#cur = conn.cursor(cursor=pymysql.cursors.DictCursor)  #设置游标返回字典类型信息
#执行SQL语句
sql = "select * from users"
cur.execute(sql)  #执行SQL语句,返回查询成功后的记录条数 ret = cur.fetchall()  #返回元组信息
print(ret)
#((1, 'xiaoyu', 'xiaoudaf', '123'), (2, 'xiaoyu', 'xiaoudafc', '123'),)
cur.close()
conn.close()

(2)SQL注入

对于用户输入的信息,我们不要直接进行拼接,需要进行过滤处理,或者使用模块方法直接帮我们解决这个问题

# 原来是我们对sql进行字符串拼接
# sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
# print(sql)
# res=cursor.execute(sql) #改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
res=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

(3)增删改需要commit

一次增加一条
sql = 'insert into users(name,fullname,password) VALUES ("dsada","dasdasf","dsad")'
cur.execute(sql) sql = 'insert into users(name,fullname,password) VALUES (%s,%s,%s)'
cur.execute(sql,("aaaaa","asd666",""))
#获取插入的最后一条数据的自增ID
print(cur.lastrowid)  #只对一次增加一个可以直接看出,对于一次增加多个需要进行数量添加
一次执行多条
sql = 'insert into users(name,fullname,password) VALUES (%s,%s,%s)'
cur.executemany(sql,[("aaadsaaa","asd6dasd66",""),("adsaaaaa","asd6awf66",""),("awaaaaa","asd666","")])

注意execute和executemany执行后会返回执行影响的条数

(4)查询

sql = "select * from users"
rows = cur.execute(sql) #返回影响的函数rows,结果放在一个集合中,等待查询 ret = cur.fetchone() #获取一条数据
print(ret) #(, 'xiaoyu', 'xiaoudaf', '') ret = cur.fetchmany() #获取指定数量的数据,从当前位置
print(ret) #((, 'xiaoyu', 'xiaoudafc', ''), (, 'daf', 'fafwafs', 'fwa')) ret = cur.fetchall() #获取当前位置下的所有数据
print(ret) #移动游标位置
cur.scroll(,mode="absolute")
ret = cur.fetchall() #获取了所有的数据
print(ret) cur.scroll(-,mode="relative") #游标处于最后,现在相对最后向前移动5条
ret = cur.fetchall() #获取了后5条数据
print(ret)

python---基础知识回顾(八)数据库基础操作(sqlite和mysql)的更多相关文章

  1. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  2. C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)

    [1] string基础 [1.1] string 的构造 #include <iostream> #include <string> int main() { using n ...

  3. scrapy实战1,基础知识回顾和虚拟环境准备

        视频地址 https://coding.imooc.com/learn/list/92.html   一. 基础知识回顾     1. 正则表达式 1)贪婪匹配,非贪婪匹配 .*? 非贪婪 . ...

  4. C#基础知识回顾--线程传参

    C#基础知识回顾--线程传参 在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值.如果希望传递参数给执行函数, ...

  5. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  6. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  7. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  8. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  9. Java基础知识回顾(一):字符串小结

    Java的基础知识回顾之字符串 一.引言 很多人喜欢在前面加入赘述,事实上去技术网站找相关的内容的一般都应当已经对相应知识有一定了解,因此我不再过多赘述字符串到底是什么东西,在官网中已经写得很明确了, ...

  10. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

随机推荐

  1. YQCB冲刺周第七天

    站立会议 任务看板 燃尽图 今天的任务为实现个人设置中的修改密码.设置金额的功能.以及界面的美化. 遇到的问题为修改自己密码时获得当前用户的id问题.

  2. YQCB冲刺周第五天

    站立会议: 任务看板: 今天的任务为依旧为将用户记录的数据添加到数据库中,以及金额球的设置. 遇到的问题为金额球在jsp页面的显示.

  3. 结对随即四则运算(带界面Java版)

    //随机四则运算类 public class 随机四则运算 { public static void main(String[] args) { new 界面();//进入随机四则运算的首界面 } } ...

  4. windows下的C++ socket服务器(1)

    windows下的一个C++ socket服务器,用到了C++11的相关内容,现在还不是很完善,以后会不断改进的! #include <winsock2.h>//1 以后会用这种方式对特定 ...

  5. 转 JS模块化简单实现

    git示例地址:https://github.com/wufenfen/requireJS-Demo.git

  6. 《构建之法》第8,9,10章读后感&sprint1个人总结

    第8章 这一章主要介绍需求分析.具体说明了软件需求的类型.利益相关者,获取用户需求分析的常用方法与步骤.竞争性需求分析的框架NABCD,四象限方法以及项目计划和估计的技术.需求分析是决定一个软件的使用 ...

  7. 『编程题全队』Alpha 阶段冲刺博客Day3

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加团队模块的标题栏 2.测试客户端和服务器之间的通讯基本连通性 3.完成团队模块的燃尽图模块 孙慧君: 1.完成了水印的设计 ...

  8. 笔记之远程桌面服务(RDS)

    Windows默认只能有2个用户同时通过RDP进行连接,非常不方便,于是借此机会学习了下Win2012R2的远程桌面配置.以下我把学习过程记录一下: 1. 最开始我觉得只需要安装“Remote Des ...

  9. [转帖]真TM长的:SQL Server 2008存储结构——GAM和SGAM、PFS结构、IAM结构、DCM&BCM

    谈到GAM和SGAM,我们不得不从数据库的页和区说起. https://blog.csdn.net/snowfoxmonitor/article/details/49991015 一个数据库由用户定义 ...

  10. sys下gpio操作

    gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射 * 控制GPIO的目录位于/sys/class/gpio * /sys/class/gpio/export文 ...