What I'm doing? I'm generating word labels in Italian and narratives from the Voynich Manuscript using a special cipher. The cipher contains abstract dashes & dots per glyph when added up equal some Morse code word related to an Italian word or a low frequency of English words.
![[Image: hetfxpbk36n31.jpg]](https://i.redd.it/hetfxpbk36n31.jpg)
Hello Python Gurus,
I've completed a database in access and a spreadsheet in excel with 103,000 Italian words which I can search for by typing in dash and then dot sequence, dash only sequence or dots only sequence which finds translations to the Voynich Manuscript (VMS) in Italian. It works great I can find a list of Italian words with the matching find or search.
for instance if I search like this.
---...... the output will be a list of all the Italian words which have that value. "AriA" just happens to be one of them.
By the way please refer to the lower cipher not the one with AriA ok thanks this is out of date!
[Image: 47]
I'm hoping for help here as to the possibility where I can use the access database or spreadsheet to help in generating many narratives in Italian. I would like to use the full potential of my CPU and python code to access the database and bring back as many narratives for Voynich paragraphs. Hence, I could choose the best fit for the narrative. I believe I have to enter every voynich word into another database or python.py file database and then have it output some meaningful sentences. Currently I'm sifting manually through the search results and looking at three words at time from 1st to 3rd Voynich words and then generating a narrative from the Voynich Manuscript which I believe was encoded by Michal Wojnicz. It's a slow arduous process, but I'm producing sentences for what I believe Michal was writing.
I produced this short sentence from the Voynich Manuscript starting at the second paragraph of f16r on 10/07/2019:
1)Euganei 2)Veneta 3)ha 4)attivo 5)sorgere 6)e 7)tondeggiava 8)nettamente 9)montante 10)e 11)se 12)stata 13)no 14)hectograms 15)drogo.
1). ..- --. .- -. . .. /2) ...- . -. . - .- /3) .... .- /4) .- - - .. ...- --- /5) ... --- .-. --. . .-. . / 6). /7) - --- -. -.. . --. --. .. .- ...- .- /8) -. . - - .- -- . -. - . /9) -- --- -. - .- -. - . /10) . /11) ... . /12) ... - .- - .- /13) -. --- /14) .... . -.-. - --- --. .-. .- -- ... /15) -.. .-. --- --. ---
Eugenean Venetia has active springs and round sharply uphills and in itself was no hectograms drugs.
https://www.euganeanhills.com/
https://en.wikipedia.org/wiki/Euganean_Hills
Here is what I believe the steps entail:
1) I have entered all of the dash & dot totals which pertain to the voynich words from my cipher in a paragraph in python.
a)here is the cipher:
![[Image: 2p17052hnmo31.jpg]](https://i.redd.it/2p17052hnmo31.jpg)
2) Next python looks at these dash and dot entries in the Voynich.accdb and and outputs 10's of 1000's or even millions of different narratives of Italian words from its access database
3) Then I go over which one I believe makes most sense and then publish it or record it.
Can anyone please help me out here?
The big question is, would this code work below with some adjustments?
![[Image: hetfxpbk36n31.jpg]](https://i.redd.it/hetfxpbk36n31.jpg)
Hello Python Gurus,
I've completed a database in access and a spreadsheet in excel with 103,000 Italian words which I can search for by typing in dash and then dot sequence, dash only sequence or dots only sequence which finds translations to the Voynich Manuscript (VMS) in Italian. It works great I can find a list of Italian words with the matching find or search.
for instance if I search like this.
---...... the output will be a list of all the Italian words which have that value. "AriA" just happens to be one of them.
By the way please refer to the lower cipher not the one with AriA ok thanks this is out of date!
[Image: 47]
I'm hoping for help here as to the possibility where I can use the access database or spreadsheet to help in generating many narratives in Italian. I would like to use the full potential of my CPU and python code to access the database and bring back as many narratives for Voynich paragraphs. Hence, I could choose the best fit for the narrative. I believe I have to enter every voynich word into another database or python.py file database and then have it output some meaningful sentences. Currently I'm sifting manually through the search results and looking at three words at time from 1st to 3rd Voynich words and then generating a narrative from the Voynich Manuscript which I believe was encoded by Michal Wojnicz. It's a slow arduous process, but I'm producing sentences for what I believe Michal was writing.
I produced this short sentence from the Voynich Manuscript starting at the second paragraph of f16r on 10/07/2019:
1)Euganei 2)Veneta 3)ha 4)attivo 5)sorgere 6)e 7)tondeggiava 8)nettamente 9)montante 10)e 11)se 12)stata 13)no 14)hectograms 15)drogo.
1). ..- --. .- -. . .. /2) ...- . -. . - .- /3) .... .- /4) .- - - .. ...- --- /5) ... --- .-. --. . .-. . / 6). /7) - --- -. -.. . --. --. .. .- ...- .- /8) -. . - - .- -- . -. - . /9) -- --- -. - .- -. - . /10) . /11) ... . /12) ... - .- - .- /13) -. --- /14) .... . -.-. - --- --. .-. .- -- ... /15) -.. .-. --- --. ---
Eugenean Venetia has active springs and round sharply uphills and in itself was no hectograms drugs.
https://www.euganeanhills.com/
https://en.wikipedia.org/wiki/Euganean_Hills
Here is what I believe the steps entail:
1) I have entered all of the dash & dot totals which pertain to the voynich words from my cipher in a paragraph in python.
a)here is the cipher:
![[Image: 2p17052hnmo31.jpg]](https://i.redd.it/2p17052hnmo31.jpg)
2) Next python looks at these dash and dot entries in the Voynich.accdb and and outputs 10's of 1000's or even millions of different narratives of Italian words from its access database
3) Then I go over which one I believe makes most sense and then publish it or record it.
Can anyone please help me out here?
The big question is, would this code work below with some adjustments?
#**********************************************************************
# FILENAME : CallSPEditRecord.py
#
# DESCRIPTION :
# Illustrates using a stored procedure to perform several
# actions relating to editing records within a table.
#
# Calls a stored procedure as follows:
#
# {CALL pyEdit_Record (?, ? ?, ?, ?, ?)}
#
# With parameter :
# 1 - action (SELECT,UPDATE,INSERT,DELETE or ALL)
# 2 - current record ID
# Used if action is Select, Update or Delete)
# 3 - 6 parameters for firstname, lastname, address, coty
# Used if action is Insert or Update
#
# ODBC USAGE :
#
# Uses the notion of current Person ID as current record
# (a value of -1 indicates none). Based on current record and
# action, the program loops, executing the stored procedure to
# either Select a specific record, Select all records, Update
# or Delete the current record or Insert a new one.
#
# Connects to Data Source using Data Source Name
# Creates cursor on the connection
# Drops and recreates a procedure 'pyEdit_Record'
# Prompts user for either a record number or an action.
# Actions available depend on whether a 'current' record
# exists. Select One, Update and Delete need a current record ID
# whereas Selecting all records and Insert don't.
#
import pyodbc
# Current record variables
currPID=-1
currFirstName=""
currLastName=""
currAddress=""
currCity=""
# List of actions
SEL=0 # action SELECT ONE
UPD=1 # action UPDATE
INS=2 # action INSERT
DEL=3 # action DELETE
ALL=4 # action SELECT ALL
#
# FUNCTION: getAction(currPID)
# Based on whether a current record is available, get next action to
# execute via stored procedure
# Returns two values, the action selected and a record ID to use as
# the current record id.
#
def getAction (currPID):
# Default action select
action=SEL
# Get PersonId to look up
print "\nNext Action: QUIT(0)\nSELECT (Rec No), SELECT ALL (A), INSERT (I),",
if currPID!=-1:
print "UPDATE (U), DELETE (D)",
next=raw_input(" ? : ")
# Check to see if we have a number or a letter
try:
PID=int(next)
if PID==0:
quit()
action=0
except ValueError:
PID=0
next=next.upper()
if next == "A":
action=4
elif next == "I":
action=2
elif next == "U":
PID=currPID
action=1
elif next == "D":
PID=currPID
action=3
else:
exit()
return (action, PID)
#
# FUNCTION: printRec(rec)
# Function to display the contents of a record retrieved by cursor.fetchone()
# or cursor.fetchall()
#
def printRec (rec):
print "\nPersonID : ", rec[0]
print "First Name : ", # Comma on end stops new line being output
if rec[1]!=None: # None appears for empty column
print rec[1][0:10] # Print string from 0 upto 10
else:
print "-" # Print - for empty column
print "Last Name : ",
if rec[2]!=None:
print rec[2][0:10]
else:
print "-"
print "Address : ",
if rec[3]!=None:
print rec[3][0:10]
else:
print "-"
print "City : ",
if rec[4]!=None:
print rec[4][0:10]
else:
print "-"
#
# Stored Procedure statements
#
# Create Stored Procedure 'pyEdit_Record' statement
#
sqlCreateSP="CREATE PROCEDURE pyEdit_Record (\
@action int, @RecID int, \
@pFirstName nvarchar(256), @pLastName nvarchar(256),\
@pAddress nvarchar(256), @pCity nvarchar(256))\
AS \
IF (@action=0) BEGIN \
SELECT PersonID, FirstName, LastName, Address, City \
FROM TestTBL1 WHERE PersonID=@RecID; \
END \
ELSE \
IF (@action=1) BEGIN \
UPDATE TestTBL1 \
SET FirstName=@pFirstName, LastName=@pLastName, \
Address=@pAddress, City=@pCity \
WHERE PersonID=@RecID; \
END \
ELSE \
IF (@action=2) BEGIN \
INSERT INTO TestTBL1 \
(FirstName, LastName, Address, City) \
VALUES (@pFirstName, @pLastName, @pAddress, @pCity);\
SELECT @@IDENTITY; \
END \
ELSE \
IF (@action=3) BEGIN \
DELETE FROM TestTBL1 WHERE PersonID=@RecID; \
END \
ELSE \
IF (@action=4) BEGIN \
SELECT PersonID, FirstName, LastName, Address, City \
FROM TestTBL1 ORDER BY PersonID; \
END"
#
# Drop Stored Procedure statement
#
sqlDropSP="IF EXISTS (SELECT * FROM sys.objects \
WHERE type='P' AND name='pyEdit_Record') \
DROP PROCEDURE pyEdit_Record"
#
# Call Stored Procedure statement
# Parameters are action, recid, firstname, lastname, address, city
#
# 6 Parameters -- 1 - Action
# 2 - Record ID
# 3-6 READ - used in UPD and INS
#
#
sqlExecSP="{call pyEdit_Record (?,?,?,?,?,?)}"
# Connect to data source
conn=pyodbc.connect('DSN=DATASOURCE', autocommit=True) # either autocommit here
# Create cursor associated with connection
cursor=conn.cursor()
print "\nStored Procedure is : pyEdit_Record"
# Drop SP if exists
cursor.execute(sqlDropSP)
# Create SP using Create statement
cursor.execute(sqlCreateSP)
# Loop - prompt for next action. getAction() will call quit() if either
# blank or 0 entered
while currPID != 0:
#
# Returns action selected in next[0], and record ID in next[1]
#
next=getAction (currPID)
action=next[0]
currPID=next[1]
# If Select not chosen, it is either Update, Insert or Delete
# selected
if action!=SEL and action!=ALL:
ok='Y'
if action==UPD:
# Updating current record
print "\nPersonID : ", currPID
print "FirstName : ", currFirstName,
currFirstName=raw_input("\nFirst Name : ")
print "LastName : ", currLastName,
currLastName=raw_input("\nLast Name : ")
print "Address : ", currAddress,
currAddress=raw_input("\nAddress : ")
print "City : ", currCity,
currCity=raw_input("\nCity : ")
elif action==INS:
# Insert new record
currFirstName=raw_input("\nFirst Name : ")
currLastName=raw_input("Last Name : ")
currAddress=raw_input("Address : ")
currCity=raw_input("City : ")
elif action==DEL:
# Delete current record
print "\nDeleting record : ",currPID," confirm Y/N : ",
ok=raw_input()
ok=ok.upper()
if ok!='Y':
ok='N'
# If OK to continue
if ok=='Y':
# Execute Stored Procedure for Update, Insert or Delete
# and trap Error if raised
try:
cursor.execute(sqlExecSP,action,currPID,currFirstName,\
currLastName,currAddress,currCity)
except pyodbc.Error, err:
print 'Execute DML Error %s' % err
# All OK. If Insert set new records as current record
if action==INS:
rec=cursor.fetchone()
currPID=rec[0]
print "\nNew Record is : ", currPID
# If Delete current record is no longer available
elif action==DEL:
currPID=-1
# If we have a current record, reselect and display
if action==INS or action==UPD:
action=SEL
try:
cursor.execute(sqlExecSP,action,currPID,currFirstName,currLastName,currAddress,currCity)
except pyodbc.Error, err:
print 'Execute ReSelect Error %s' % err
recs=cursor.fetchall()
for rec in recs:
printRec(rec)
else:
#
# Either select one or select all
#
# Clear variables
currFirstName=""
currLastName=""
currAddress=""
currCity=""
# Action select one (using current record) or select all
try:
cursor.execute(sqlExecSP,action,currPID,currFirstName,currLastName,currAddress,currCity)
except pyodbc.Error, err:
print 'Execute SELECT error %s' % err
# Display results - one record if select one, many for select all
recs=cursor.fetchall()
for rec in recs:
printRec(rec)
if len(recs)==0:
print ("\nNo matching records found")
currPID=-1
elif action==SEL:
# If selected one record, it becomes the current record
currFirstName=rec[1]
currLastName=rec[2]
currAddress=rec[3]
currCity=rec[4]
if action==ALL:
# If selected all, we have no current record
currPID=-1;
print ("\n\nComplete.")
# Close and delete cursor
cursor.close()
del cursor
# Close connection
conn.close()
