added sql stuff
This commit is contained in:
BIN
Freitag/__pycache__/decorators.cpython-39.pyc
Normal file
BIN
Freitag/__pycache__/decorators.cpython-39.pyc
Normal file
Binary file not shown.
BIN
Freitag/__pycache__/utilities.cpython-39.pyc
Normal file
BIN
Freitag/__pycache__/utilities.cpython-39.pyc
Normal file
Binary file not shown.
28
Freitag/db_con.py
Normal file
28
Freitag/db_con.py
Normal file
@@ -0,0 +1,28 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
#Benötigt python3-pymysql
|
||||
# mysql -h notebook14 -u python -pvilla inventory
|
||||
import sys
|
||||
import pymysql
|
||||
|
||||
from utilities import hide_exception
|
||||
|
||||
def db_connect(credentials: dict):
|
||||
connection = pymysql.connect(**credentials)
|
||||
return connection
|
||||
|
||||
# Passwort aus Konfigiruationsdaten lesen
|
||||
credentials = dict(
|
||||
host = 'notebook14',
|
||||
user = 'python',
|
||||
password = 'villa',
|
||||
database = 'inventory'
|
||||
)
|
||||
|
||||
#Connection
|
||||
def main():
|
||||
db = db_connect(credentials)
|
||||
db.close()
|
||||
|
||||
|
||||
hide_exception(main)
|
||||
63
Freitag/db_insert.py
Normal file
63
Freitag/db_insert.py
Normal file
@@ -0,0 +1,63 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
#Benötigt python3-pymysql
|
||||
# mysql -h notebook14 -u python -pvilla inventory
|
||||
import sys
|
||||
import pymysql
|
||||
|
||||
from utilities import hide_exception
|
||||
|
||||
def db_connect(credentials: dict):
|
||||
connection = pymysql.connect(**credentials)
|
||||
return connection
|
||||
|
||||
# Passwort aus Konfigiruationsdaten lesen
|
||||
credentials = dict(
|
||||
host = 'notebook14',
|
||||
user = 'python',
|
||||
password = 'villa',
|
||||
database = 'inventory'
|
||||
)
|
||||
|
||||
|
||||
def list_hosts(connection):
|
||||
cursor = connection.cursor()
|
||||
sql = """
|
||||
SELECT name, domain, address
|
||||
FROM hosts
|
||||
ORDER BY name
|
||||
"""
|
||||
cursor.execute(sql)
|
||||
#ermittlung cursor.fetchone() eine Zeile cursor.fetchmany() gibt vile in einer Zeile
|
||||
# cursor ist Iterator
|
||||
#test = [row for row in cursor]
|
||||
for row in cursor:
|
||||
print("{0:20} {2:15} {2}".format(*row))
|
||||
|
||||
def add_host(connection, args):
|
||||
cursor = connection.cursor()
|
||||
sql = """
|
||||
INSERT INTO hosts
|
||||
(name, domain, address)
|
||||
VALUES (%(name)s, %(domain)s, %(address)s)
|
||||
"""
|
||||
# oder mit .format(**args) {name} usw
|
||||
cursor.execute(sql,args)
|
||||
connection.commit()
|
||||
|
||||
|
||||
#Connection
|
||||
def main():
|
||||
db = db_connect(credentials)
|
||||
#list_hosts(db)
|
||||
row = dict(
|
||||
name='notebook999',
|
||||
domain='linuxhotel.de',
|
||||
address='192.168.1.254',
|
||||
db = 'hosts'
|
||||
)
|
||||
add_host(db, row)
|
||||
db.close()
|
||||
|
||||
|
||||
hide_exception(main)
|
||||
45
Freitag/db_select.py
Normal file
45
Freitag/db_select.py
Normal file
@@ -0,0 +1,45 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
#Benötigt python3-pymysql
|
||||
# mysql -h notebook14 -u python -pvilla inventory
|
||||
import sys
|
||||
import pymysql
|
||||
|
||||
from utilities import hide_exception
|
||||
|
||||
def db_connect(credentials: dict):
|
||||
connection = pymysql.connect(**credentials)
|
||||
return connection
|
||||
|
||||
# Passwort aus Konfigiruationsdaten lesen
|
||||
credentials = dict(
|
||||
host = 'notebook14',
|
||||
user = 'python',
|
||||
password = 'villa',
|
||||
database = 'inventory'
|
||||
)
|
||||
|
||||
|
||||
def list_hosts(connection):
|
||||
cursor = connection.cursor()
|
||||
sql = """
|
||||
SELECT name, domain, address
|
||||
FROM hosts
|
||||
ORDER BY name
|
||||
"""
|
||||
cursor.execute(sql)
|
||||
#ermittlung cursor.fetchone() eine Zeile cursor.fetchmany() gibt vile in einer Zeile
|
||||
# cursor ist Iterator
|
||||
#test = [row for row in cursor]
|
||||
for row in cursor:
|
||||
print("{0:20} {2:23} {1:15}".format(*row))
|
||||
|
||||
|
||||
#Connection
|
||||
def main():
|
||||
db = db_connect(credentials)
|
||||
list_hosts(db)
|
||||
db.close()
|
||||
|
||||
|
||||
hide_exception(main)
|
||||
33
Freitag/decorators.py
Normal file
33
Freitag/decorators.py
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
def counter(func):
|
||||
def counting(*args, **kwargs):
|
||||
counting.callcount += 1
|
||||
return func(*args, **kwargs)
|
||||
counting.callcount = 0
|
||||
return counting
|
||||
|
||||
def get_counter(func):
|
||||
try:
|
||||
return func.callcount
|
||||
except:
|
||||
return None
|
||||
|
||||
def reset_counter(func):
|
||||
try:
|
||||
func.callcount
|
||||
func.callcount = 0
|
||||
except:
|
||||
return None
|
||||
|
||||
def trace(func):
|
||||
def tracing(*args, **kwargs):
|
||||
tracing.level += 1
|
||||
print(' '*(tracing.level*4) + "BEGIN function", func.__name__)
|
||||
result = func(*args, **kwargs)
|
||||
print(' '*(tracing.level*4) + "End function", func.__name__)
|
||||
tracing.level -= 1
|
||||
return result
|
||||
|
||||
tracing.level = 0
|
||||
return tracing
|
||||
24
Freitag/ext_ip.py
Normal file
24
Freitag/ext_ip.py
Normal file
@@ -0,0 +1,24 @@
|
||||
#! /usr/bin/env python3
|
||||
import requests
|
||||
#import json
|
||||
#localdata = json.loads(json_string) # erzeugt Python-Datemstruktur
|
||||
#jsonstring = json.dumps(data) # erzeugt eni Json-String der Daten
|
||||
#http://ip.jsontest.com
|
||||
#https://luonnotar.infodrom.org/json
|
||||
def get_external_ip():
|
||||
url = 'https://luonnotar.infodrom.org/json'
|
||||
response = requests.get(url)
|
||||
if response.status_code != 200:
|
||||
raise Exception("HTTP Status is " + str(response.status_code))
|
||||
#text = response.content.decode()
|
||||
#print("Content-type der Antwort:", response.headers['Content-Type'])
|
||||
data = response.json()
|
||||
if 'application/json' not in response.headers['Content-Type']:
|
||||
raise Exception ("Content-Type is not application/json")
|
||||
ip = data['ip']['remote']
|
||||
return ip
|
||||
|
||||
|
||||
|
||||
ip = get_external_ip()
|
||||
print("Aktuelle externe IP-Addresse: ", ip)
|
||||
22
Freitag/fakultät.py
Normal file
22
Freitag/fakultät.py
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python3
|
||||
from decorators import counter, get_counter, trace
|
||||
|
||||
|
||||
@counter
|
||||
def fak(n):
|
||||
if type(n) is not int or n < 0:
|
||||
raise TypeError("Illegal type")
|
||||
if n == 0:
|
||||
return 1
|
||||
return n * fak(n-1)
|
||||
|
||||
print("6! =", fak(6))
|
||||
print("Anzahl Aufrufe:", get_counter(fak))
|
||||
|
||||
@trace
|
||||
def fak(n):
|
||||
if n == 0:
|
||||
return 1
|
||||
return n * fak(n-1)
|
||||
|
||||
print(fak(4))
|
||||
37
Freitag/fibonacci.py
Normal file
37
Freitag/fibonacci.py
Normal file
@@ -0,0 +1,37 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
def fibonacci(n):
|
||||
if n == 1 or n == 2:
|
||||
return 1
|
||||
#Rekursiver Funktionsaufruf
|
||||
#return fibonacci(n - 1) + fibonacci(n - 2)
|
||||
fn_1, fn_2 = 1, 1
|
||||
for i in range(n-2):
|
||||
fn_1, fn_2 = fn_1 + fn_2, fn_1
|
||||
return fn_1
|
||||
|
||||
def fibonacci_folge(n):
|
||||
if n >= 1:
|
||||
#print("yield 1 (fib(1))")
|
||||
yield 1
|
||||
if n >=2:
|
||||
#print("yield 1 (fib(2))")
|
||||
yield 1
|
||||
#Rekursiver Funktionsaufruf
|
||||
#return fibonacci(n - 1) + fibonacci(n - 2)
|
||||
fn_1, fn_2 = 1, 1
|
||||
for i in range(n-2):
|
||||
fn_1, fn_2 = fn_1 + fn_2, fn_1
|
||||
#print("yield {} (fib({}))".format(fn_1, i+3))
|
||||
yield fn_1
|
||||
|
||||
#print("fib(5) =", fibonacci(5))
|
||||
#
|
||||
# print("fib(40) =", fibonacci(400))
|
||||
|
||||
for nr, fib in enumerate(fibonacci_folge(30)):
|
||||
print(nr+1, fib, sep=' -> ')
|
||||
|
||||
#print(list(fibonacci_folge(30)))
|
||||
#print([i for i in fibonacci_folge(10)])
|
||||
|
||||
86
Freitag/insert_all.py
Normal file
86
Freitag/insert_all.py
Normal file
@@ -0,0 +1,86 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
#Benötigt python3-pymysql
|
||||
# mysql -h notebook14 -u python -pvilla inventory
|
||||
import sys
|
||||
import pymysql
|
||||
|
||||
from utilities import hide_exception
|
||||
|
||||
def db_connect(credentials: dict):
|
||||
connection = pymysql.connect(**credentials)
|
||||
return connection
|
||||
|
||||
# Passwort aus Konfigiruationsdaten lesen
|
||||
|
||||
|
||||
|
||||
def list_hosts(connection):
|
||||
cursor = connection.cursor()
|
||||
sql = """
|
||||
SELECT name, domain, address
|
||||
FROM hosts
|
||||
ORDER BY name
|
||||
"""
|
||||
cursor.execute(sql)
|
||||
#ermittlung cursor.fetchone() eine Zeile cursor.fetchmany() gibt vile in einer Zeile
|
||||
# cursor ist Iterator
|
||||
#test = [row for row in cursor]
|
||||
for row in cursor:
|
||||
print("{0:20} {2:15} {2}".format(*row))
|
||||
|
||||
def add_host(connection, args):
|
||||
cursor = connection.cursor()
|
||||
sql = """
|
||||
INSERT INTO hosts
|
||||
(name, domain, address)
|
||||
VALUES (%(name)s, %(domain)s, %(address)s)
|
||||
"""
|
||||
# oder mit .format(**args) {name} usw
|
||||
cursor.execute(sql,args)
|
||||
connection.commit()
|
||||
|
||||
def db_insert_into(connection, table, data):
|
||||
columns = []
|
||||
values = []
|
||||
for col in data.keys():
|
||||
col = col.replace("'", '')
|
||||
columns.append(col)
|
||||
values.append('%('+col+')s')
|
||||
sql = """
|
||||
INSERT INTO {table}
|
||||
({columns})
|
||||
VALUES ({placeholder})
|
||||
""".format(
|
||||
table=table,
|
||||
columns=','.join(columns),
|
||||
placeholder=','.join(values),
|
||||
)
|
||||
print(sql)
|
||||
|
||||
with connection as cursor:
|
||||
cursor.execute(sql, data)
|
||||
|
||||
|
||||
|
||||
|
||||
#Connection
|
||||
def main():
|
||||
credentials = dict(
|
||||
host = 'notebook14',
|
||||
user = 'python',
|
||||
password = 'villa',
|
||||
database = 'inventory'
|
||||
)
|
||||
db = db_connect(credentials)
|
||||
#list_hosts(db)
|
||||
row = dict(
|
||||
name='notebook999',
|
||||
domain='linuxhotel.example',
|
||||
address='192.168.1.254',
|
||||
)
|
||||
db_insert_into(db, 'hosts', row )
|
||||
db.close()
|
||||
|
||||
|
||||
hide_exception(main)
|
||||
27
Freitag/utilities.py
Normal file
27
Freitag/utilities.py
Normal file
@@ -0,0 +1,27 @@
|
||||
"""
|
||||
Miscellaneous utilities
|
||||
"""
|
||||
import sys
|
||||
from traceback import format_tb
|
||||
|
||||
def hide_exception(func):
|
||||
try:
|
||||
return func()
|
||||
except Exception as e:
|
||||
name = type(e).__name__
|
||||
text = str(e)
|
||||
traceback = ''.join(format_tb(e.__traceback__))
|
||||
|
||||
if '-V' in sys.argv:
|
||||
print("Entwickler_Mode: wip")
|
||||
#Für Faule Leute einfacher weiterleiten mit raise
|
||||
#raise
|
||||
print("{name}: {text}".format(name=name, text=text), file=sys.stderr)
|
||||
print("Traceback:\n", traceback, sep='', file=sys.stderr)
|
||||
else:
|
||||
print("Interner Fehler,", e)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("from uitlities import hide_exception")
|
||||
print("hide_exception(main)")
|
||||
Reference in New Issue
Block a user