加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python操作sqlite3数据库完全代码

发布时间:2020-12-17 17:08:29 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 # Name: pySnipnix.py# Author: pantuts# Email: [email?protected]# Description: Saving your snippets to sqlite3 database.# Agreement: You can

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

# Name: pySnipnix.py
# Author: pantuts
# Email: [email?protected]
# Description: Saving your snippets to sqlite3 database.
# Agreement: You can use,modify,or redistribute this tool under
# the terms of GNU General Public License (GPLv3).
# This tool is for educational purposes only. Any damage you make will not affect the author.
# first run: python pySnipnix.py
 
#!/usr/bin/python
 
import argparse
import sqlite3
import re
import sys
 
# important,create the file
fileN = open('database.db','a+')
 
def main():
     
    # add all arguments needed
    # for argument that need FILE use [ type=argparse.FileType('r') ]
    parser = argparse.ArgumentParser(description=None,usage='python %(prog)s -h --help -f file -s search -a 'title' 'code here' -e id -d id -v --version')
    parser.add_argument('-f',metavar='filename',type=argparse.FileType('r'),dest='filename',help='File for database')
    parser.add_argument('-s',metavar='string',dest='search',help='Search for string in database')
    parser.add_argument('-a',dest='add',nargs=2,help='Add snippet. You should use '' for long string')
    parser.add_argument('-e',metavar='id',type=int,dest='edit',help='Edit snippet')
    parser.add_argument('-d',dest='delete',help='Delete from database')
    parser.add_argument('-S',dest='show',action='store_true',help='Show all records')
    parser.add_argument('-v','--version',action='version',version='%(prog)s 1.0',help='Print version')
     
    # parse all arguments to 'args'
    args = parser.parse_args()
     
    # database connection
    conn = sqlite3.connect('database.db')
    cur = conn.cursor()
     
    def createTable():
        cmd = 'CREATE TABLE IF NOT EXISTS snippets (id INTEGER PRIMARY KEY AUTOINCREMENT,title VARCHAR(50),code VARCHAR NOT NULL)'
        cur.execute(cmd)
        conn.commit()
         
    def insertSnippets():
        # convert the string to lowercase and then execute
        lst = [args.add[0].lower(),args.add[1].lower()]
        cmd = 'INSERT INTO snippets VALUES (NULL,?,?)'
        cur.execute(cmd,lst)
        conn.commit()
         
        print('nNew Snippet...')
        print('Snippet Title: t%s' % args.add[0])
        print('Code: tt%s' % args.add[1])
         
    def editSnippets():
        cur.execute('SELECT * FROM snippets where id=%s' % str(args.edit))
        res = cur.fetchone()
        if res is None:
            print('No record to edit!')
        else:
            resl = [result for result in res]
            print('Current title >> ' + resl[1])
            ed1 = input('Title (Leave black,same title): ')
            print('Current snippet >> ' + resl[2])
            ed2 = input('Code: ')
            if ed1 is '':
                ed1 = resl[1]
            cur.executemany('UPDATE snippets SET title='%s',code='%s' WHERE id=?' % (ed1.lower(),ed2.lower()),str(resl[0]))
            conn.commit()
            print('Done!n')
     
    def deleteSnippets():
        print('nDeleting record with ID %s ...' % str(args.delete))
         
        # first find if record exists and return false if not found
        cur.execute('SELECT * FROM snippets where id=%s' % str(args.delete))
        res = cur.fetchone()
        if res is None:
            print('No record to delete!')
        else:
            cmd = 'DELETE FROM snippets where id=%s' % str(args.delete)
            cur.execute(cmd)
            conn.commit()
            print('Deleted!n')
     
    def showOrSearch(cmd):
        # creating conn.create_function explanation: 1st(string to be used inside SQL),2nd(count of arguments),3rd(the function created)
        def matchPattern(pattern,columnName):
            pat = re.compile(pattern)
            return pat.search(columnName) is not None
        conn.create_function('matchPattern',2,matchPattern)
         
        if cmd == 2:
            cur.execute('SELECT * FROM snippets WHERE matchPattern('%s',title)' % str(args.search.lower()))
        else:
            cmd = 1
            cur.execute('SELECT * FROM snippets')
        res = cur.fetchall()
        # create empty dict,process filter keys and values
        s = {'id':{},'title':{},'code':{}}
        print('nRecords result...')
        for result in res:
            s['id'] = result[0]
            s['title'] = result[1]
            s['code'] = result[2]
            print('[%s]t[ %s ]---------->[ %s ]n' % (s['id'],s['title'],s['code']))
         
    # invoke creation of table
    createTable()
     
    if len(sys.argv) < 1:
        parser.print_help()
     
    # do filtering when -f 'filename' is correct
    if args.filename is not None:
         
        if args.show:
            if args.add or args.delete or args.search or args.edit:
                print('nYou can't use other options with -S option')
                exit()
            else:

                args.add = None
                args.delete = None
                args.search = None
                args.edit = None
                showOrSearch(1)
         
        elif args.edit:

            if args.add or args.delete or args.search:

                print('nYou can't use other options with -e option')
                exit()
            else:
                args.search = None
                args.add = None
                args.delete = None
                editSnippets()
         
        else:
            if args.add is None and args.delete is None and args.search is None:
                print('n!!!!!You need to specify addional arguments to process the database!!!!!n')
                parser.print_help()
             
            if args.search:
                args.edit = None           
                showOrSearch(2)
             
            if args.add:
                args.edit = None
                args.search = None             
                insertSnippets()
                 
            if args.delete:
                args.search = None
                args.edit = None
                deleteSnippets()
                 
     
    else:
        parser.print_help()
     
    # close our connection to the database
    conn.commit()
    conn.close()   
     
def by():
    print('n[Script by: pantuts]')
    print('[email: [email?protected]]')
 
if __name__=="__main__":
    main()
    # close our file
    fileN.close()

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读