一些基础性的东西,Python对Sqlite的操作,增删改查!一个上午搞定,主要是熟悉下与数据库的交互,在这个基础上面,大家可以做很多的扩展,比如导入导出EXCEL等。
import f
import os,sqlite3
print("\t\t小帆哥香烟出入库系统----By Tony\n");
dbpath='TonyCigar.db'
#创建数据库和表
if(not os.path.exists(dbpath)):
print('初始化数据库和表...')
con=sqlite3.connect(dbpath);
cur=con.cursor();
cur.execute('create table if not exists cigar(cbarcode varchar(30), cname varchar(30),wprice integer,rprice integer,stocknum integer default 0)');
con.commit();
con.close();
print("数据库和表初始化成功!")
print("操作说明:输入对应的数字进行相应的操作\n\n0:录入烟的档案,1:入库,2:出库,3:查询库存\n4:删除某烟档案,5:调整库存,8:退出系统\n");
s=input("请输入对应的数字:");
#录入档案
if(s=='0'):
while(1):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cbarcode=input("输入烟的条码:");
if(cbarcode=='8' or cbarcode==''):
print("烟的条码不能为空!");
break;
if(len(f.isBarcodeExist(dbpath,cbarcode)))>0:
print("此烟已存在!");
else:
cname=input("输入烟的名称:");
if(cname==''):
print("烟的名称不能为空!");
break;
cur.execute('insert into cigar values(?,?,?)',(cbarcode,cname,0));
con.commit();
con.close();
print(cname+":录入档案成功!");
#入库
elif(s=='1'):
while(1):
cbarcode=input("输入烟的条码:");
if(cbarcode==''):
print("烟的条码不能为空!");
break;
stocknum=input("输入入库数量:");
if(stocknum=='' or not stocknum.isdecimal()):
print("入库数量不能为空且必须是整数!");
break;
if(f.inStock(dbpath,cbarcode,int(stocknum))>0):
print(f.getCigarName(dbpath,cbarcode)+":入库成功!");
#出库
elif(s=='2'):
while(1):
cbarcode=input("输入烟的条码:");
if(cbarcode==''):
print("烟的条码不能为空!");
break;
stocknum=input("输入出库数量:");
if(stocknum=='' or not stocknum.isdecimal()):
print("出库数量不能为空且必须是整数!");
break;
if(f.outStock(dbpath,cbarcode,int(stocknum))>0):
print(f.getCigarName(dbpath,cbarcode)+":出库成功!");
#查询库存
elif(s=='3'):
while(1):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cbarcode=input("输入烟的条码:");
cur.execute("select * from cigar where cbarcode like '%"+cbarcode+"%'");
res=cur.fetchall();
if(len(res))==0:
print("条码不存在!");
else:
print("-----------------------------------------------------------------------------------");
print("序号\t条码\t\t烟名\t\t\t批发价\t零售指导价\t数量(整条)");
print("-----------------------------------------------------------------------------------");
i=1;
for r in res:
print('%-5s'%i,r[0],'%-20s'%r[1],'%-15s'%r[2],'%-10s'%r[3],'%-20s'%r[4]);#-左对齐,没有-是右对齐
i+=1
#print(r[0],'\t\t',r[1],'\t\t',r[2],'\t\t\t',r[3],'\t',r[4]);
#删除对应烟档案
elif(s=='4'):
while(1):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cbarcode=input("输入要删除的烟的条码:");
if(cbarcode=='8' or cbarcode==''):
print("烟的条码不能为空!");
break;
if(len(f.isBarcodeExist(dbpath,cbarcode)))==0:
print("此烟条码不存在,请检查!");
else:
cur.execute('delete from cigar where cbarcode=?',(cbarcode,));#注意元组需要一个逗号
con.commit();
con.close();
print("档案删除成功!");
#调整库存
elif(s=='5'):
while(1):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cbarcode=input("输入烟的条码:");
if(cbarcode=='8' or cbarcode==''):
print("烟的条码不能为空!");
break;
if(len(f.isBarcodeExist(dbpath,cbarcode)))==0:
print("此烟条码不存在,请检查!");
else:
stocknum=input("输入调整库存数量:");
if(cbarcode=='8' or cbarcode==''):
print("烟的条码不能为空!");
break;
cur.execute('update cigar set stocknum=? where cbarcode=?',(stocknum,cbarcode));
con.commit();
con.close();
print(f.getCigarName(dbpath,cbarcode)+":库存调整成功!");
elif(s=='8'):
quit();
else:
print("请输入正确的数字进行操作!");
import f导入的模块是自己写的一些函数,忘记贴出来了,主要是判断条码是否存在等,集中起来,主要是方便复用:
f.py
import sqlite3
#烟的条码是否存在
def isBarcodeExist(dbpath,barcode):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cur.execute("select * from cigar where cbarcode='"+barcode+"'");
res=cur.fetchall();
return res;
#根据烟的条码查询出烟的名称
def getCigarName(dbpath,barcode):
con=sqlite3.connect(dbpath);
cur=con.cursor();
cur.execute("select cname from cigar where cbarcode='"+barcode+"'");
res=cur.fetchone();
if not(res is None):
return res[0];
else:
return '不存在此烟!'
#入库:先判断条码是否存在
def inStock(dbpath,barcode,stocknum):
con=sqlite3.connect(dbpath);
cur=con.cursor();
if(len(isBarcodeExist(dbpath,barcode)))==0:
print("条码不存在!");
return 0;
else:
cur.execute('update cigar set stocknum=stocknum+? where cbarcode=?',(stocknum,barcode));
con.commit();
con.close();
return cur.rowcount;
#出库:先判断条码是否存在
def outStock(dbpath,barcode,stocknum):
con=sqlite3.connect(dbpath);
cur=con.cursor();
if(len(isBarcodeExist(dbpath,barcode)))==0:
print("条码不存在!");
return 0;
else:
cur.execute('update cigar set stocknum=stocknum-? where cbarcode=?',(stocknum,barcode));
con.commit();
con.close();
return cur.rowcount