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问题和坑的更多相关文章

  1. python中remove函数的坑

    摘要:对于python中的remove()函数,官方文档的解释是:Remove first occurrence of value.大意也就是移除列表中等于指定值的第一个匹配的元素. 常见用法: a ...

  2. python中remove的一些坑

    前几天,使用python时遇到这么一个需求,删除一个列表中值为1的元素.我寻思着使用remove方法,但是remove方法只会删除第一个,于是我使用for循环去删除.代码和运行结果如下: 当时这个结果 ...

  3. python中 __file__的小坑坑

    在python脚本中,我们难免会需要用到自身文件所在的绝对路径,第一想法可能就是用os.path.dirname(__file__) 但是这里有个大坑,我就踩了,这种方式得到路径会出现问题,脚本执行报 ...

  4. ~~在python中踩过的坑以及问题~~(不断更新)

    python说简单也不难,但是在这其中大大小小的点 真的是有够折磨人欸!  1.   input 输入的时候,即使输入的是数字,数据类型也是字符串   2.   字符串本质上来看可以看作有序数组  3 ...

  5. Python中Json解析的坑

    JSON虽好,一点点不对,能把人折腾死: 1.变量必须要用双引号 2.如果是字符串,必须要用引号包起来 Error:Expecting : delimiter: line 1 column 6 (ch ...

  6. python中 遇到的读取坑2.7和3.6版本的问题

    2.7读取,需要使用io.open 3.x使用open 使用io.open的时候路径需要使用\\ 目前io.open的文件名不能为中文

  7. 细数Python Flask微信公众号开发中遇到的那些坑

    最近两三个月的时间,断断续续边学边做完成了一个微信公众号页面的开发工作.这是一个快递系统,主要功能有用户管理.寄收件地址管理.用户下单,订单管理,订单查询及一些宣传页面等.本文主要细数下开发过程中遇到 ...

  8. python中的这些坑,早看早避免。

    python中的这些坑,早看早避免. 说一说python中遇到的坑,躲坑看这一篇就够了 传递参数时候不要使用列表 def foo(num,age=[]): age.append(num) print( ...

  9. python中round(四舍五入)的坑

    python中的round函数不能直接拿来四舍五入,一种替代方式是使用Decimal.quantize()函数. 具体内容待补. >>> round(2.675, 2) 2.67 可 ...

随机推荐

  1. Es6对象的扩展和Class类的基础知识笔记

    /*---------------------对象的扩展---------------------*/ //属性简写 ,属性名为变量名, 属性值为变量的值 export default functio ...

  2. 《剑指offer》 大数递增

    本题来自<剑指offer> 大数的存储 题目: 针对以下问题:大数的存储.大数的相加.大数的运算. 思路: 当数据较大时候,long long数据已经存储不了,借助数组的方式进行存储. 假 ...

  3. laravel 5 优化

    性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表: 配 ...

  4. mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,

      在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记 ...

  5. 出现xml错误的时候都是配置文件的名字没有改造成的

    The error may exist in com/bjpowernode/dao/PlayerDao.xml

  6. python中利用上下文管理器来实现mysql数据库的封装

    from pymysql import connect class DB(object): def __init__(self, password, database): # 1.连接数据库 self ...

  7. SQL Server表关联

    表关联:Hash.Nested Loops.Merge.这是实际算法,不是T-SQL中的inner/left/right/full/cross join.优化器会把这些T-SQL写法转换成上面的3种算 ...

  8. es6 箭头函数【箭头表达式】

    箭头函数,通过 => 语法实现的函数简写形式,C#/JAVA8/CoffeeScript 中都有类似语法.与函数不同,箭头函数与其执行下文环境共享同一个 this.如果一个箭头函数出现在一个函数 ...

  9. 部署Asp.net core & Nginx,通过nginx转发

    部署Asp.net core & Nginx,通过nginx转发 CentOS 7 x64 1.vs2017 建立Asp.net core项目,并发布到目录 2.通过FTP工具,将程序copy ...

  10. Introduction to boundary integral equations in BEM

    Boundary element method (BEM) is an effective tool compared to finite element method (FEM) for resol ...