python3 sqlite3限制條件查詢的操作

請註意10,11,24行的代碼,是本條博客的精華,邏輯並不難,就是有些小語法問題比較糾結,記錄一下。

import json 
import sqlite3
import re
import argparse
def Get(db_file):
  
    conn = sqlite3.connect(db_file)
    cur = conn.cursor()
    print("5555555")
    value1=(60)# this is must be ()
    cur.execute("select * from exception where AGV_ID=(%s)" %(value1))
    #cursor.execute("insert into exception values('%s', '%s','%s' ) " %(start_time ,ID ,infomation))
 
    result= cur.fetchall()
    print("result:",result)
    for i in result:
       print(i)  
    print("******************************888")
  
def get_agv_id(db_file):
  try:
    conn = sqlite3.connect(db_file)
    cur = conn.cursor()
    cur.execute("select * from exception where AGV_ID=51")
    #print( cur.fetchall())
    result= cur.fetchall()
    for i in result:
       print(i)
  except sqlite3.Error,e:
    print(e)
    
if __name__ == '__main__': 
  parser = argparse.ArgumentParser(description='check the information of db')
  #parser.add_argument('-h', '--help', help='Statistics for abnormal information')
  parser.add_argument('-n', '--name', help=' the db of name ')
  args = vars(parser.parse_args())
  db_name = args['name']
  print("db_name:",db_name)
  conn = sqlite3.connect('db_name')
  cursor = conn.cursor()
  Get('fitkits.db')
  get_agv_id('fitkits.db')  
  
  conn.commit()
  conn.close() 
  print('DONE!')
  print("666")

補充:python + sqlite3 基本操作

連接數據庫

import sqlite3 
# 連接數據庫(如果不存在則創建)
conn = sqlite3.connect('test.db')
print("Opened database successfully")
 
# 創建遊標
cursor = conn.cursor() 
...
 
# 關閉遊標
cursor.close()
# 提交事物
conn.commit()
# 關閉連接
conn.close()

創建表

...
# 創建遊標
cursor = conn.cursor()
 
# 創建表
sql = 'CREATE TABLE Student(id integer PRIMARY KEY autoincrement, Name varchar(30), Age integer)'
cursor.execute(sql)
 
# 提交事物
conn.commit()
...

插入數據

...
# 創建遊標
cursor = conn.cursor()
 
# 插入數據
sql = "INSERT INTO Student(Name, Age) VALUES(\'love\', 22)"
cursor.execute(sql)
 
# 插入數據 2
data = ('love2', 2221) # or ['love2', 2221]
sql = "INSERT INTO Student(Name, Age) VALUES(?, ?)"
cursor.execute(sql, data)
 
# 提交事物
conn.commit()
...

查詢數據

...
# 創建遊標
cursor = conn.cursor()
 
# 查詢數據
sql = "select * from Student"
values = cursor.execute(sql)
for i in values:
 print(i)
 
# 查詢數據 2
sql = "select * from Student where id=?"
values = cursor.execute(sql, (1,))
for i in values:
 print('id:', i[0])
 print('name:', i[1])
 print('age:', i[2])
 
# 提交事物
conn.commit()
...

其他操作

自增字段起始位置

# 設置起始值為1
update sqlite_sequence SET seq = 0 where name = '表名';
# 設置全部表起始值為默認值
delete from sqlite_sequence where name='TableName'; --註意表名區分大小寫

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。