<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>http://dhlab.aks.ac.kr/~tutor/wiki/index.php?action=history&amp;feed=atom&amp;title=EncyTime02.py</id>
		<title>EncyTime02.py - 편집 역사</title>
		<link rel="self" type="application/atom+xml" href="http://dhlab.aks.ac.kr/~tutor/wiki/index.php?action=history&amp;feed=atom&amp;title=EncyTime02.py"/>
		<link rel="alternate" type="text/html" href="http://dhlab.aks.ac.kr/~tutor/wiki/index.php?title=EncyTime02.py&amp;action=history"/>
		<updated>2026-04-10T02:23:40Z</updated>
		<subtitle>이 문서의 편집 역사</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://dhlab.aks.ac.kr/~tutor/wiki/index.php?title=EncyTime02.py&amp;diff=813&amp;oldid=prev</id>
		<title>Tutor: 새 문서: &lt;pre&gt; #!/usr/bin/python #-*- coding: utf-8 -*- #2019. 11. 4. written by Hyeon Kim  import sys import pyodbc import cgi import cgitb  noIcon = &quot;&lt;img src='http://dh.aks.ac.kr/VR/style/n...</title>
		<link rel="alternate" type="text/html" href="http://dhlab.aks.ac.kr/~tutor/wiki/index.php?title=EncyTime02.py&amp;diff=813&amp;oldid=prev"/>
				<updated>2019-11-04T05:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;새 문서: &amp;lt;pre&amp;gt; #!/usr/bin/python #-*- coding: utf-8 -*- #2019. 11. 4. written by Hyeon Kim  import sys import pyodbc import cgi import cgitb  noIcon = &amp;quot;&amp;lt;img src=&amp;#039;http://dh.aks.ac.kr/VR/style/n...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#-*- coding: utf-8 -*-&lt;br /&gt;
#2019. 11. 4. written by Hyeon Kim&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import pyodbc&lt;br /&gt;
import cgi&lt;br /&gt;
import cgitb&lt;br /&gt;
&lt;br /&gt;
noIcon = &amp;quot;&amp;lt;img src='http://dh.aks.ac.kr/VR/style/noicon60.png' height='40'/&amp;gt;&amp;quot;&lt;br /&gt;
referenceIcon = &amp;quot;&amp;lt;img src='http://dh.aks.ac.kr/VR/style/text60.png' height='40'/&amp;gt;&amp;quot;&lt;br /&gt;
networkIcon = &amp;quot;&amp;lt;img src='http://dh.aks.ac.kr/VR/style/semantic60.png' height='40'/&amp;gt;&amp;quot;&lt;br /&gt;
ontologyIcon = &amp;quot;&amp;lt;img src='http://dh.aks.ac.kr/VR/style/ontology60.png' height='40'/&amp;gt;&amp;quot;&lt;br /&gt;
galleryIcon = &amp;quot;&amp;lt;img src='http://dh.aks.ac.kr/VR/style/gallery60.png' height='40'/&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
def sayMessage( errNo ):&lt;br /&gt;
&lt;br /&gt;
	if( errNo == 1 ):&lt;br /&gt;
		message = 'Database is Not Connected!'&lt;br /&gt;
		icon = 'http://dh.aks.ac.kr/VR/style/notConnected.png'&lt;br /&gt;
	else:&lt;br /&gt;
		if( errNo == 2 ):&lt;br /&gt;
			message = 'Data Set is Not Available!'&lt;br /&gt;
			icon = 'http://dh.aks.ac.kr/VR/style/notAvailable.png'&lt;br /&gt;
		else:&lt;br /&gt;
			message = 'Key Node is Not Found!'&lt;br /&gt;
			icon = 'http://dh.aks.ac.kr/VR/style/notFound.png'&lt;br /&gt;
&lt;br /&gt;
	print &amp;quot;			nodesArray.push({\n&amp;quot;&lt;br /&gt;
	print &amp;quot;				id: 'errMessage',\n&amp;quot;&lt;br /&gt;
	print &amp;quot;				label: '{0}',\n&amp;quot;.format( message )&lt;br /&gt;
	print &amp;quot;				shape: 'image',\n&amp;quot;&lt;br /&gt;
	print &amp;quot;				image: '{0}',\n&amp;quot;.format( icon )&lt;br /&gt;
	print &amp;quot;			});\n&amp;quot;	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def displayData( node ):&lt;br /&gt;
&lt;br /&gt;
	server = 'tcp:digerati.aks.ac.kr' &lt;br /&gt;
	database = 'pcn2019' &lt;br /&gt;
	username = 'guest' &lt;br /&gt;
	password = 'guest' &lt;br /&gt;
	&lt;br /&gt;
	try:&lt;br /&gt;
		db = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)	&lt;br /&gt;
	except:&lt;br /&gt;
		sayMessage( 1 )&lt;br /&gt;
		return&lt;br /&gt;
		&lt;br /&gt;
	cur = db.cursor()&lt;br /&gt;
		&lt;br /&gt;
	comstring1=&amp;quot;select sid,  timeLabel, label, class, groupName, encyUrl, infoUrl, iconUrl from ency2019Timeline where indexYear&amp;gt;='&amp;quot;&lt;br /&gt;
	comstring2=node.replace(&amp;quot;:&amp;quot;, &amp;quot;' and indexYear&amp;lt;='&amp;quot;)&lt;br /&gt;
	comstring3=&amp;quot;'  order by class, indexYear, indexDate, timeLabel&amp;quot;	&lt;br /&gt;
	command = comstring1 + comstring2 + comstring3&lt;br /&gt;
&lt;br /&gt;
	try:	&lt;br /&gt;
		cur.execute(unicode(command, &amp;quot;utf-8&amp;quot;))&lt;br /&gt;
	except:&lt;br /&gt;
		cur.close()&lt;br /&gt;
		db.close()&lt;br /&gt;
		sayMessage( 2 )&lt;br /&gt;
		return&lt;br /&gt;
		&lt;br /&gt;
	recipe = []&lt;br /&gt;
	&lt;br /&gt;
	for row in cur.fetchall():&lt;br /&gt;
		recipe.append( {'sid':row[0], 'timeLabel':row[1], 'label':row[2], 'class':row[3], 'group':row[4], 'encyUrl':row[5], 'infoUrl':row[6], 'iconUrl':row[7]} )&lt;br /&gt;
		&lt;br /&gt;
	cur.close()	&lt;br /&gt;
	db.close()&lt;br /&gt;
	&lt;br /&gt;
	previousClass = None&lt;br /&gt;
	lineCount = 0&lt;br /&gt;
	&lt;br /&gt;
	for item in recipe:&lt;br /&gt;
	&lt;br /&gt;
		currentClass=item['class']&lt;br /&gt;
		if( currentClass != previousClass ):&lt;br /&gt;
			if( lineCount &amp;gt; 0 ): 	print &amp;quot;	&amp;lt;/table&amp;gt;&amp;lt;/br&amp;gt;&amp;quot;&lt;br /&gt;
			#print Heading &lt;br /&gt;
			print &amp;quot;	&amp;lt;h2&amp;gt;&amp;lt;b&amp;gt;§ {0}&amp;lt;/b&amp;gt;&amp;lt;/h2&amp;gt;&amp;quot;.format(item['class'])&lt;br /&gt;
			print &amp;quot;	&amp;lt;table&amp;gt;&amp;quot;&lt;br /&gt;
			print &amp;quot;		&amp;lt;tr&amp;gt;&amp;lt;th width='10%%'&amp;gt;Time Span&amp;lt;/th&amp;gt;&amp;lt;th width='10%%'&amp;gt;Image&amp;lt;/th&amp;gt;&amp;lt;th width='40%%'&amp;gt;Label&amp;lt;th width='10%%'&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;th width='10%%'&amp;gt;Network&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
			previousClass = currentClass			&lt;br /&gt;
		lineCount = lineCount + 1 &lt;br /&gt;
			&lt;br /&gt;
		print &amp;quot;			&amp;lt;tr&amp;gt;&amp;quot;&lt;br /&gt;
		#column 1: timeLabel&lt;br /&gt;
		print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;{0}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;.format(item['timeLabel'])&lt;br /&gt;
		#column 2: image&lt;br /&gt;
		if item['iconUrl'] &amp;lt;&amp;gt; None: &lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;img src='{0}' height='40'/&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;.format(item['iconUrl'])&lt;br /&gt;
		else:&lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;{0}&amp;lt;/td&amp;gt;&amp;quot;.format(noIcon)&lt;br /&gt;
		#column 3: label&lt;br /&gt;
		classification=item['class']&lt;br /&gt;
		print &amp;quot;				&amp;lt;td&amp;gt;【{0}】 &amp;lt;b&amp;gt;{1}&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;.format(item['group'], item['label'])&lt;br /&gt;
		#column 4: infoUrl link&lt;br /&gt;
		if item['infoUrl'] &amp;lt;&amp;gt; None: &lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;a href='{0}'&amp;gt;{1}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;.format(item['infoUrl'], referenceIcon)	&lt;br /&gt;
		else:&lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
		#column 6: Term Network Link&lt;br /&gt;
		if item['encyUrl'] &amp;lt;&amp;gt; None: &lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;a href='{0}'&amp;gt;{1}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;.format(item['encyUrl'], networkIcon)&lt;br /&gt;
		else:&lt;br /&gt;
			print &amp;quot;				&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;quot;&lt;br /&gt;
		print &amp;quot;			&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	#close Table&lt;br /&gt;
	print &amp;quot;	&amp;lt;/table&amp;gt;&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
def displayResults(template, node):&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;Content-type: text/html&amp;quot;)&lt;br /&gt;
	print&lt;br /&gt;
	f = open(template)&lt;br /&gt;
	while 1:&lt;br /&gt;
		line = f.readline()&lt;br /&gt;
		if not line: break&lt;br /&gt;
		if( '#YourData' == line.strip()):&lt;br /&gt;
			displayData( node )&lt;br /&gt;
		else:&lt;br /&gt;
			print line&lt;br /&gt;
			&lt;br /&gt;
	f.close()&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
&lt;br /&gt;
	reload(sys)&lt;br /&gt;
	sys.setdefaultencoding('utf8')&lt;br /&gt;
	cgitb.enable()&lt;br /&gt;
	&lt;br /&gt;
	try:&lt;br /&gt;
		node = sys.argv[1]&lt;br /&gt;
	except:&lt;br /&gt;
		node = &amp;quot;1591:1600&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	displayResults(&amp;quot;templateTbs.htm&amp;quot;, node)&lt;br /&gt;
&lt;br /&gt;
main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tutor</name></author>	</entry>

	</feed>