Prime number 2. The sqlite strikes back!

Python

PrimeNumbersHundredsChart Finally got some code working with saving the Primes on a DB. I started by saving as I find the prime and realised that the constant IO activity was slowing the all process down. Next step was multi treading: this is still not 100%. Here is the code so far:

# Python program to calculate prime numbers import math import threading import sqlite3 count = 0 primeList = [] dbname='/home/roberto/primelist.db' table_name = 'primes' # name of the table to be created new_field = 'prime' # name of the column field_type = 'INTEGER' # column data type

def save_primes(number, topnum): while True: add_prime(primeList[number]) number +=1 if number == (topnum - 1): break

def createDB():

Connecting to the database file

conn = sqlite3.connect(dbname)
c = conn.cursor()
try:
    #c.execute('select prime from primes')
    #primeList = c.fetchall()
     for row in  c.execute('select prime from primes'):
        primeList.append(int(row\[0\]))

except:
    # Creating a new SQLite table with 1 column
    c.execute('CREATE TABLE {tn} ({nf} {ft})'\\
            .format(tn=table\_name, nf=new\_field, ft=field\_type))

# Committing changes and closing the connection to the database file
conn.commit()
conn.close()

def add_prime(prime):

conn=sqlite3.connect(dbname)
curs=conn.cursor()

curs.execute("INSERT INTO primes values((?))", (prime,))

# commit the changes
conn.commit()

conn.close()

def isPrime(num):

prime numbers are greater than 1

if num > 1:
   # check for factors
   for i in range(len(primeList)):
       if (num % primeList\[i\]) == 0:
           #print(num,"is not a prime number")
           #print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")
       primeList.append(num)
       #add\_prime(num)

# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")

start

createDB() if len(primeList) == 0: num = 1 count = 0 else: num = primeList[len(primeList)-1]+1 count = len(primeList)

while True: isPrime(num) num += 1

this logic will save the primes async to avoid slow IO

if (num % math.pow(10, 4))==0:
    t = threading.Thread(target=save\_primes, args=(count, len(primeList), ))
    t.start()
    count = len(primeList)

if num == math.pow(10, 101):
    break