python中sqlite问题和坑
import sqlite3 #导入模块
conn = sqlite3.connect('example.db')
C=conn.cursor()
#创建表
C.execute('''CREATE TABLE stocks(data text,trans text, symple text,qty real,price real)''')
#插入一条数据
C.execute('''INSERT INTO stocks VALUES('2006-10-01,'BUY','RHA',100,35.14)''')
#提交当前事务,保存数据
#关闭数据连接
conn.close()
#查询数据库
for row in c.execute('SELECT * FROM stocks OPRED BY price'):
print(row)#s数据库是列表类型,可进行迭代
import sqlite3
conn = sqlite3.connect(":memory:")
cur=conn.cursor()
cur.execute("CREATE TABLE people(name_last,age)")
who = "li"
age="20"
cur.execute("INSERT INTO people VALUES(?, ?)",(who, age))
cur.execute("SELECT * FROM people WHERE name_last=:who AND age=:age",{"who":who,"age":age})
print(cur.fetchone())
Cursor
#1利用数据库完成小写字母
import sqlite3
class IterChars:
def __init__(self):
self.count=ord('a')
def __iter__(self):
return self
def __next__(self):
if self.count>ord('z'):
raise StopIteration
self.count+=1
return(chr(self.count-1),)
conn = sqlite3.connect(":memory:")
cur=conn.cursor()
cur.execute("CREATE TABLE characters(c)")
theIter=IterChars()
cur.executemany("INSERT INTO characters(c) VALUES(?)",theIter)
cur.execute("SELECT c FROM characters")
print(cur.fetchall())
#2利用yield完成对小写字母的创建
import sqlite3
import string
def char_gernerator():
for c in string.ascii_lowercase:
yield(c,)
conn = sqlite3.connect(":memory:")
cur=conn.cursor()
cur.execute("CREATE TABLE characters(c)")
#theIter=IterChars()
cur.executemany("INSERT INTO characters(c) VALUES(?)",char_gernerator())
cur.execute("SELECT c FROM characters")
print(cur.fetchall())
python的sqlite坑
#bug1表不存在
import sqlite3
conn=sqlite3.connect("D:/addressbook.db")
cur = conn.cursor()
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小王','女','18337257400','18674529','beijing')''')
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小李','女','18337257401','18674528','nanjing')''')
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小l','女','18337257403','18674525','tianjin')''')
conn.commit()
conn.close()
程序执行,我在心里想着这么low的代码应该没问题的,结果竟然报错了,fuck,表不存在什么鬼,于是百度,发现好多都是废话,好吧,不需要了,我在脑中想了会,既然不存在,那我就创建
#修改后
import sqlite3
conn=sqlite3.connect("D:/addressbook.db")
cur = conn.cursor()
cur.execute('''CREATE TABLE addresslist(name text,sex text,phone real,qq real,address text)''')
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小王','女','18337257400','18674529','beijing')''')
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小李','女','18337257401','18674528','nanjing')''')
cur.execute('''INSERT INTO addresslist(name,sex,phone,qq,address)VALUES('小l','女','18337257403','18674525','tianjin')''')
conn.commit()
conn.close()
程序bug完美解决
下面进行遍历查找
import sqlite3
conn=sqlite3.connect("D:/addressbook.db")
cur=conn.cursor()
cur.execute('SELECT * FROM addresslist')
li = cur.fetchall()
for line in li:
for item in line:
print(item,end=' ')
print()
conn.close()
好了,终于完美解决。
#sqllite之row
import sqlite3
conn=sqlite3.connect(":memory:")
c=conn.cursor()
#创建表
c.execute('''CREATE TABLE stocks(data text,trans text,symple text,qty real,price real)''')
c.execute("""INSERT INTO stocks VALUES ('2006-10-01','BUY','RHA',100,35.14)""")
conn.commit()
c.close()
conn.row_factory=sqlite3.Row
c=conn.cursor()
c.execute('SELECT * FROM stocks')
r=c.fetchone()
print(type(r))
print(tuple(r))
print(r[2])
print(r.keys())
print(r['qty'])
for field in r:
print(field)
python中sqlite问题和坑的更多相关文章
- python中remove函数的坑
摘要:对于python中的remove()函数,官方文档的解释是:Remove first occurrence of value.大意也就是移除列表中等于指定值的第一个匹配的元素. 常见用法: a ...
- python中remove的一些坑
前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素.我寻思着使用remove方法,但是remove方法只会删除第一个,于是我使用for循环去删除.代码和运行结果如下: 当时这个结果 ...
- python中 __file__的小坑坑
在python脚本中,我们难免会需要用到自身文件所在的绝对路径,第一想法可能就是用os.path.dirname(__file__) 但是这里有个大坑,我就踩了,这种方式得到路径会出现问题,脚本执行报 ...
- ~~在python中踩过的坑以及问题~~(不断更新)
python说简单也不难,但是在这其中大大小小的点 真的是有够折磨人欸! 1. input 输入的时候,即使输入的是数字,数据类型也是字符串 2. 字符串本质上来看可以看作有序数组 3 ...
- Python中Json解析的坑
JSON虽好,一点点不对,能把人折腾死: 1.变量必须要用双引号 2.如果是字符串,必须要用引号包起来 Error:Expecting : delimiter: line 1 column 6 (ch ...
- python中 遇到的读取坑2.7和3.6版本的问题
2.7读取,需要使用io.open 3.x使用open 使用io.open的时候路径需要使用\\ 目前io.open的文件名不能为中文
- 细数Python Flask微信公众号开发中遇到的那些坑
最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...
- python中的这些坑,早看早避免。
python中的这些坑,早看早避免. 说一说python中遇到的坑,躲坑看这一篇就够了 传递参数时候不要使用列表 def foo(num,age=[]): age.append(num) print( ...
- python中round(四舍五入)的坑
python中的round函数不能直接拿来四舍五入,一种替代方式是使用Decimal.quantize()函数. 具体内容待补. >>> round(2.675, 2) 2.67 可 ...
随机推荐
- Es6对象的扩展和Class类的基础知识笔记
/*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...
- 《剑指offer》 大数递增
本题来自<剑指offer> 大数的存储 题目: 针对以下问题:大数的存储.大数的相加.大数的运算. 思路: 当数据较大时候,long long数据已经存储不了,借助数组的方式进行存储. 假 ...
- laravel 5 优化
性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表: 配 ...
- mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...
- 出现xml错误的时候都是配置文件的名字没有改造成的
The error may exist in com/bjpowernode/dao/PlayerDao.xml
- python中利用上下文管理器来实现mysql数据库的封装
from pymysql import connect class DB(object): def __init__(self, password, database): # 1.连接数据库 self ...
- SQL Server表关联
表关联:Hash.Nested Loops.Merge.这是实际算法,不是T-SQL中的inner/left/right/full/cross join.优化器会把这些T-SQL写法转换成上面的3种算 ...
- es6 箭头函数【箭头表达式】
箭头函数,通过 => 语法实现的函数简写形式,C#/JAVA8/CoffeeScript 中都有类似语法.与函数不同,箭头函数与其执行下文环境共享同一个 this.如果一个箭头函数出现在一个函数 ...
- 部署Asp.net core & Nginx,通过nginx转发
部署Asp.net core & Nginx,通过nginx转发 CentOS 7 x64 1.vs2017 建立Asp.net core项目,并发布到目录 2.通过FTP工具,将程序copy ...
- Introduction to boundary integral equations in BEM
Boundary element method (BEM) is an effective tool compared to finite element method (FEM) for resol ...