一些基础性的东西,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("请输入正确的数字进行操作!");

python引入库会影响速度吗 python 入库_ci

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