zoukankan      html  css  js  c++  java
  • Python_sqlite3

     1 import sqlite3  #导入模块
     2 conn = sqlite3.connect('example.db')    #连接数据库
     3 c = conn.cursor()
     4 #创建表
     5 c.execute('''CREATE TABLE stocks(date text,trans text,symbol text,qty real,price real)''')
     6 #插入一条纪录
     7 c.execute("INSERT INTO stocks VALUES('2016-01-05','BUY','RHAT',100,35.14)")
     8 #提交当前事务,保存数据
     9 conn.commit()
    10 #关闭数据库连接
    11 conn.close()
    12 
    13 
    14 connSe = sqlite3.connect('example.db')
    15 c = connSe.cursor()
    16 for row in c.execute('SELECT * FROM stocks ORDER BY price'):
    17     print(row)

    #调用自定义函数

     1 import sqlite3
     2 import hashlib
     3 
     4 #自定义函数
     5 def md5sum(t):
     6     return hashlib.md5(t).hexdigest()
     7 
     8 #在内存中创建临时数据库
     9 conn = sqlite3.connect(":memory:")
    10 #创建可在SQL语句中调用的函数
    11 conn.create_function("md5",1,md5sum)
    12 cur = conn.cursor()
    13 #在SQL语句中调用自定义函数
    14 cur.execute("select md5(?)",["中国北京".encode()])
    15 print(cur.fetchone()[0])

    #占位符的使用

     1 import sqlite3
     2 
     3 conn = sqlite3.connect(":memory:")
     4 cur = conn.cursor()
     5 cur.execute("CREATE TABLE people(name_last,age)")
     6 who='Dong'
     7 age='38'
     8 #使用问号作为占位符
     9 cur.execute('insert into people values(?,?)',(who,age))
    10 #使用命名变量作为占位符
    11 cur.execute('select *from people where name_last=:who and age=:age',{'who':who,'age':age})
    12 print(cur.fetchone())

    #迭代器生成数据

     1 import sqlite3
     2 
     3 #自定义迭代器,按顺序生成小写字母
     4 class IterChars:
     5     def __init__(self):
     6         self.count = ord('a')
     7     def __iter__(self):
     8         return self
     9     def __next__(self):
    10         if self.count > ord('z'):
    11             raise StopIteration
    12         self.count +=1
    13         return (chr(self.count-1))
    14 conn = sqlite3.connect(":memory:")
    15 cur = conn.cursor()
    16 cur.execute("create table characcters(c)")
    17 #创建迭代器对象
    18 theIter = IterChars()
    19 #插入记录,每次插入一个英文小写字母
    20 cur.executemany('insert into characcters(c)values(?)',theIter)
    21 #读取并显示所有记录
    22 cur.execute('select c from characcters')
    23 print(cur.fetchall())

    #迭代器生成更简洁的方式

     1 #下面的代码则使用了更为简洁的生成器来产生参数:
     2 import sqlite3
     3 import string
     4 
     5 #包含yield语句的函数可以用来创建生成器对象
     6 def char_generator():
     7     for c in string.ascii_lowercase:
     8         yield (c,)
     9 
    10 conn = sqlite3.connect(":memory:")
    11 cur = conn.cursor()
    12 cur.execute("create table characters(c)")
    13 #使用生成器对象得到参数序列
    14 cur.executemany("insert into characters(c)values(?)",char_generator())
    15 cur.execute('select c from characters')
    16 print(cur.fetchall())
     1 import sqlite3
     2 person=[('Hugo','Boss'),('Calvin','Klein')]
     3 conn=sqlite3.connect(":memory:")
     4 #创建表
     5 conn.execute('create table person(firstname,lastname)')
     6 #插入数据
     7 conn.executemany('insert into person(firstname,lastname) values (?,?)',person)
     8 #显示数据
     9 for row in conn.execute('select firstname,lastname from person'):
    10     print(row)
    11 print('I just deleted',conn.execute('delete from person').rowcount,'rows')
     1 '''用来读取数据
     2 fetchone()
     3 fetchmany(size=cursor,arraysize)
     4 fetchall()
     5 '''
     6 import sqlite3
     7 
     8 conn = sqlite3.connect('addressBook.db')
     9 conn.execute('create table addressList(name,sex,phon,QQ,address)')
    10 cur =  conn.cursor()    #创建游标
    11 cur.execute("insert into addressList(name,sex,phon,QQ,address)values('王小丫','女','13111110010','66735','北京市')")
    12 cur.execute("insert into addressList(name,sex,phon,QQ,address)values('李莉莉','女','11231110010','66755','天津市')")
    13 cur.execute("insert into addressList(name,sex,phon,QQ,address)values('李发莉','女','11235410010','66723','开封市')")
    14 conn.commit()   #提交事务,把数据写入数据库
    15 
    16 cur.execute('select *from addressList')
    17 li=cur.fetchall()   #返回所有查询结果
    18 for line in li:
    19     for item in line:
    20         print(item,end=' ')
    21     print()
    22 
    23 conn.close()
     1 '''Row对象'''
     2 #假设数据以下面的方式创建并插入数据:
     3 import sqlite3
     4 conn = sqlite3.connect('test.db')
     5 c=conn.cursor()
     6 c.execute("create table stocks(date text,trans text,symbol text,qty real,price real)")
     7 c.execute("insert into stocks values('2016-01-05','BUY','RHAT',100,35.14)")
     8 conn.commit()
     9 
    10 
    11 #使用下面的方式来读取其中的数据:
    12 conn.row_factory = sqlite3.Row
    13 c=conn.cursor()
    14 c.execute('select * from stocks')
    15 r=c.fetchone()
    16 print(type(r))
    17 print(tuple(r))
    18 print(r[2])
    19 print(r.keys())
    20 print(r['qty'])
    21 for field in r:
    22     print(field)
    23 conn.close()
  • 相关阅读:
    从产品原型到交互设计的过渡——初学者心得
    谈什么是卡片式设计?
    vertical-align:middle的居中细节调整
    line-height:2和line-height:2em的区别,它们是有区别的
    css中!important的用法总结
    使用em为单位制作两列弹性布局
    如何动态修改下拉列表的默认选中项
    【转】深入浅出协议栈
    经典排序js实现
    js 数组的拷贝
  • 原文地址:https://www.cnblogs.com/cmnz/p/7059903.html
Copyright © 2011-2022 走看看