Initial commit
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"driver": "",
|
||||
"server": "",
|
||||
"database": "",
|
||||
"username": "",
|
||||
"password": ""
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
"""
|
||||
A program demonstrating how to connect to a SQL Server 2000 database and retrieving some results
|
||||
from a query.
|
||||
|
||||
Author: Kun Deng
|
||||
|
||||
"""
|
||||
|
||||
import collections # Used for a list structure
|
||||
import datetime # Used for parsing datetimes
|
||||
import json # Used for parsing the connection string info
|
||||
import sys # Used to retrieve the command line arguments
|
||||
|
||||
import pyodbc # Used to connect to the SQL Server 2000 database
|
||||
|
||||
|
||||
# Model representing the [JobMessageQueue] table
|
||||
class JobMessageQueue:
|
||||
|
||||
# The constructor
|
||||
def __init__(self, rec_id = "", user_id = "", message = "", occurred = "", cleared = "", job_key = ""):
|
||||
self.rec_id = rec_id
|
||||
self.user_id = user_id
|
||||
self.message = message
|
||||
self.occurred = occurred
|
||||
self.cleared = cleared
|
||||
self.job_key = job_key
|
||||
|
||||
|
||||
rec_id = 0
|
||||
user_id = ""
|
||||
message = ""
|
||||
occurred = ""
|
||||
cleared = ""
|
||||
job_key = ""
|
||||
|
||||
|
||||
# Model representing the connection string json file
|
||||
class ConnectionString:
|
||||
|
||||
# The constructor
|
||||
def __init__(self, driver = "", server = "", database = "", username = "", password = ""):
|
||||
self.driver = driver
|
||||
self.server = server
|
||||
self.database = database
|
||||
self.username = username
|
||||
self.password = password
|
||||
|
||||
|
||||
# The SQL Native Client driver can communicate with SQL Server 2000
|
||||
driver = "SQL Native Client"
|
||||
server = ""
|
||||
database = ""
|
||||
username = ""
|
||||
password = ""
|
||||
|
||||
|
||||
# Retrieves queued messages of a given user
|
||||
def retrieve_queued_messages(conn_string, user):
|
||||
messages = collections.defaultdict(JobMessageQueue)
|
||||
|
||||
# Opens a connection to the database
|
||||
conn = pyodbc.connect(conn_string)
|
||||
# Creates a cursor object. From this object one can make queries against
|
||||
# the database
|
||||
curs = conn.cursor()
|
||||
|
||||
i = 0
|
||||
|
||||
# Iterates through each row returned from the query and adds the record
|
||||
# to our user-defined dictionary messages
|
||||
for row in curs.execute("SELECT * FROM [JobMessageQueue] WHERE UserID = ?", user):
|
||||
message = JobMessageQueue(row.Rec_id, row.UserID, row.Message, row.Occurred)
|
||||
message.cleared = row.Cleared
|
||||
message.job_key = row.JobKey
|
||||
|
||||
messages[i] = message
|
||||
i += 1
|
||||
|
||||
conn.close()
|
||||
|
||||
return messages
|
||||
|
||||
|
||||
# Parsed the json file as a connection string object
|
||||
def parse_connection_string(path):
|
||||
file = open(path, "r")
|
||||
|
||||
json_obj = json.loads(file.read())
|
||||
|
||||
file.close()
|
||||
|
||||
conn_string = ConnectionString()
|
||||
conn_string.driver = json_obj["driver"]
|
||||
conn_string.server = json_obj["server"]
|
||||
conn_string.database = json_obj["database"]
|
||||
conn_string.username = json_obj["username"]
|
||||
conn_string.password = json_obj["password"]
|
||||
|
||||
return conn_string
|
||||
|
||||
|
||||
# Returns the connection string object as a string. Conforming to the connection string
|
||||
# format to connect to the SQL Server 2000 database
|
||||
def connection_string_obj_to_string(conn_string_obj):
|
||||
conn_string = f"Driver={conn_string_obj.driver}; Server={conn_string_obj.server}; "
|
||||
conn_string = conn_string + f"Database={conn_string_obj.database}; "
|
||||
conn_string = conn_string + f"UiD={conn_string_obj.username}; "
|
||||
conn_string = conn_string + f"PwD={conn_string_obj.password};"
|
||||
|
||||
return conn_string
|
||||
|
||||
|
||||
def print_queued_message(message):
|
||||
print("\nRec Id: %d" % message.rec_id)
|
||||
print("User Id: %s" % message.user_id)
|
||||
print("Message: %s" % message.message)
|
||||
print("Occurred: %s" % message.occurred)
|
||||
print("Cleared: %s" % message.cleared)
|
||||
print("Job Key: %s\n" % message.job_key)
|
||||
|
||||
|
||||
def print_queued_messages(messages):
|
||||
for message in messages.items():
|
||||
print_queued_message(message[1])
|
||||
|
||||
|
||||
def main():
|
||||
print("In the main function")
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print("Include path to the connection string file")
|
||||
sys.exit(-1)
|
||||
|
||||
connection_str_path = sys.argv[1]
|
||||
|
||||
conn_string_obj = parse_connection_string(connection_str_path)
|
||||
conn_string = connection_string_obj_to_string(conn_string_obj)
|
||||
|
||||
print("Connection string is %s" % (conn_string))
|
||||
|
||||
messages = retrieve_queued_messages(conn_string, "kdeng")
|
||||
|
||||
print_queued_messages(messages)
|
||||
|
||||
|
||||
|
||||
# Checking if the main function has been declared, if so that is where the program starts
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1 @@
|
||||
pyodbc==4.0.30
|
||||
Reference in New Issue
Block a user