Hallo liebe Boardmitglieder,
ich kämpfe aktuell mal wieder mit einem Problem mit der Programmierung.
Ich habe ein kleines Python Programm, welches eine Datenbank erzeugt bzw. wenn vorhanden nutzt.
Verwendet wird Python3 und Sqlite auf der Shellebene.
Es wird eine Datenbank mit folgenden Werten erstellt:
try:
sql = "CREATE TABLE verlauf2(" \
"nummer INTEGER PRIMARY KEY, " \
"nick TEXT, " \
"verl BLOB, " \
"datum INTEGER)"
cursor.execute(sql)
except:
print("Datenbank geladen")
Gedacht ist es als eine Art Chatverlauf bzw. Ticketsystem.
Anwender vergibt (aktuell noch) eine laufende Nummer, gibt den Nutzer an und kopiert den Text aus einem anderen Fenster (inklusive Zeilenschaltung usw) und danach noch das aktuelle Datum.
Hierfür nutze ich folgenden Code
nummer = input("Nummer: ")
nick = input("Wer schrieb: ")
verl = input("Text: ")
datum = datetime.strptime(input("Datum: "), "%d.%m.%Y")
sql = 'INSERT INTO verlauf2 VALUES (?, ?, ?, ?)'
args = (nummer, nick, verl, datum)
cursor.execute(sql, args)
connection.close()
Bei kurzem Text, funktioniert alles. Wenn ich jedoch Text nehme, der etwas länger ist (genau habe ich es noch nicht herausfinden können wie lange) läuft wohl der Speicher voll, bzw erkennt die INPUT Abfrage eine Zeilenschaltung und schreibt nicht weiter in die Datenbank.
Ich habe jetzt mal folgenden Beispieltext erzeugen lassen um den Fehler euch mit neutralem Text zu zeigen:
Lorem ipsum dolor sit amet, dico libris altera ut vim, solum salutatus id vis? Fabulas commune detracto pro te, no ubique ceteros sea? Te denique scripserit vis, ut agam vivendum sed. Zril utinam gloriatur vim te! Ex quo prompta neglegentur, eum ne quot clita, harum eripuit volumus eu has.
Ea pri hinc commodo, cu duo magna posse! Ius ei aliquando tincidunt. Quo illum paulo mandamus cu, ne his scaevola appetere, mundi libris eleifend qui no? Te mollis meliore his. Illum quidam expetenda te nam, ex nec explicari liberavisse. At tale alia commune pri?
Vix et eirmod praesent definiebas, ferri epicurei suscipiantur per an, his sanctus mentitum an! Ne audire appareat sea. Cu pro accusam epicuri, elitr exerci et est! Ad eos aliquam vituperatoribus.
Possim praesent et mei, scripta labitur in cum. Percipit reprimique cu mei. Sea et omittam scripserit, sit tantas feugiat eu, vim legere posidonium at! Ne has menandri incorrupte, id pro duis tation?
In der Shell kommt dann dieses bei mir raus:
Datenbank geladen
Nummer: 44
Wer schrieb: ípsum
Text: Lorem ipsum dolor sit amet, dico libris altera ut vim, solum salutatus id vis? Fabulas commune detracto pro te, no ubique ceteros sea? Te denique scripserit vis, ut agam vivendum sed. Zril utinam gloriatur vim te! Ex quo prompta neglegentur, eum ne quot clita, harum eripuit volumus eu has.
Datum: Ea pri hinc commodo, cu duo magna posse! Ius ei aliquando tincidunt. Quo illum paulo mandamus cu, ne his scaevola appetere, mundi libris eleifend qui no? Te mollis meliore his. Illum quidam expetenda te nam, ex nec explicari liberavisse. At tale alia commune pri?
Vix et eirmod praesent definiebas, ferri epicurei suscipiantur per an, his sanctus mentitum an! Ne audire appareat sea. Cu pro accusam epicuri, elitr exerci et est! Ad eos aliquam vituperatoribus.
Possim praesent et mei, scripta labitur in cum. Percipit reprimique cu mei. Sea et omittam scripserit, sit tantas feugiat eu, vim legere posidonium at! Ne has menandri incorrupte, id pro duis tation?<!--: spam
Content-Type: text/html
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> -->
<body bgcolor="#f0f0f8"><font color="#f0f0f8" size="-5"> --> -->
</font> </font> </font> </script> </object> </blockquote> </pre>
</table> </table> </table> </table> </table> </font> </font> </font><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#6622aa">
<td valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>ValueError</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial">Python 3.2.3: /usr/bin/python3<br>Thu May 12 07:40:47 2016</font></td></tr></table>
<p>A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.</p>
<table width="100%" cellspacing=0 cellpadding=0 border=0>
<tr><td bgcolor="#d8bbff"><big> </big><a href="file:///var/www/daten.py">/var/www/daten.py</a> in <strong><module></strong>()</td></tr>
<tr><td><font color="#909090"><tt> <small> 22</small> nick = input("Wer schrieb: ")<br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 23</small> verl = input("Text: ")<br>
</tt></font></td></tr>
<tr><td bgcolor="#ffccee"><tt>=><small> 24</small> datum = datetime.strptime(input("Datum: "), "%d.%m.%Y")<br>
</tt></td></tr>
<tr><td><font color="#909090"><tt> <small> 25</small> <br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 26</small> <br>
</tt></font></td></tr>
<tr><td><small><font color="#909090">datum <em>undefined</em>, <strong>datetime</strong> = <class 'datetime.datetime'>, datetime.<strong>strptime</strong> = <built-in method strptime of type object>, <em>builtin</em> <strong>input</strong> = <built-in function input></font></small></td></tr></table>
<table width="100%" cellspacing=0 cellpadding=0 border=0>
<tr><td bgcolor="#d8bbff"><big> </big><a href="file:///usr/lib/python3.2/_strptime.py">/usr/lib/python3.2/_strptime.py</a> in <strong>_strptime_datetime</strong>(cls=<class 'datetime.datetime'>, data_string='', format='%d.%m.%Y')</td></tr>
<tr><td><font color="#909090"><tt> <small> 498</small> """Return a class cls instance based on the input string and the<br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 499</small> format string."""<br>
</tt></font></td></tr>
<tr><td bgcolor="#ffccee"><tt>=><small> 500</small> tt, fraction = _strptime(data_string, format)<br>
</tt></td></tr>
<tr><td><font color="#909090"><tt> <small> 501</small> gmtoff, tzname = tt[-2:]<br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 502</small> args = tt[:6] + (fraction,)<br>
</tt></font></td></tr>
<tr><td><small><font color="#909090">tt <em>undefined</em>, fraction <em>undefined</em>, <em>global</em> <strong>_strptime</strong> = <function _strptime>, <strong>data_string</strong> = '', <strong>format</strong> = '%d.%m.%Y'</font></small></td></tr></table>
<table width="100%" cellspacing=0 cellpadding=0 border=0>
<tr><td bgcolor="#d8bbff"><big> </big><a href="file:///usr/lib/python3.2/_strptime.py">/usr/lib/python3.2/_strptime.py</a> in <strong>_strptime</strong>(data_string='', format='%d.%m.%Y')</td></tr>
<tr><td><font color="#909090"><tt> <small> 335</small> if not found:<br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 336</small> raise ValueError("time data %r does not match format %r" %<br>
</tt></font></td></tr>
<tr><td bgcolor="#ffccee"><tt>=><small> 337</small> (data_string, format))<br>
</tt></td></tr>
<tr><td><font color="#909090"><tt> <small> 338</small> if len(data_string) != found.end():<br>
</tt></font></td></tr>
<tr><td><font color="#909090"><tt> <small> 339</small> raise ValueError("unconverted data remains: %s" %<br>
</tt></font></td></tr>
<tr><td><small><font color="#909090"><strong>data_string</strong> = '', <strong>format</strong> = '%d.%m.%Y'</font></small></td></tr></table><p><strong>ValueError</strong>: time data '' does not match format '%d.%m.%Y'
<br><tt><small> </small> </tt>args =
("time data '' does not match format '%d.%m.%Y'",)
<br><tt><small> </small> </tt>with_traceback =
<built-in method with_traceback of ValueError object>
<!-- The above is a description of an error in a Python program, formatted
for a Web browser because the 'cgitb' module was enabled. In case you
are not reading this in a Web browser, here is the original traceback:
Traceback (most recent call last):
File "daten.py", line 24, in <module>
datum = datetime.strptime(input("Datum: "), "%d.%m.%Y")
File "/usr/lib/python3.2/_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.2/_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '' does not match format '%d.%m.%Y'
-->
pi@raspberrypi /var/www $ Ea pri hinc commodo, cu duo magna posse! Ius ei aliquando tincidunt. Quo illum paulo mandamus cu, ne his scaevola appetere, mundi libris eleifend qui no? Te mollis meliore his. Illum quidam expetenda te nam, ex nec explicari liberavisse. At tale alia commune pri?
-bash: Ea: command not found
pi@raspberrypi /var/www $
pi@raspberrypi /var/www $ Vix et eirmod praesent definiebas, ferri epicurei suscipiantur per an, his sanctus mentitum an! Ne audire appareat sea. Cu pro accusam epicuri, elitr exerci et est! Ad eos aliquam vituperatoribus.
-bash: Vix: command not found
pi@raspberrypi /var/www $
pi@raspberrypi /var/www $ Possim praesent et mei, scripta labitur in cum. Percipit reprimique cu mei. Sea et omittam scripserit, sit tantas feugiat eu, vim legere posidonium at! Ne has menandri incorrupte, id pro duis tation?
Alles anzeigen
Habe ich einfach zu viel Text, oder liegt in der Formatierung das Problem?
Vielleicht kann mir jemand einen Hinweis geben, wie ich das Problem umgehen kann.
Später soll das Programm auf einer Webseite aufgerufen werden können, der Primary Key soll sich selbst erstellen und auch das aktuell Datum inklusive Zeitstempel der Aufnahme.
Rein der Text und der Nutzer sollen vom Anwender noch eingetragen werden müssen.
Sollte das Problem mit Sqlite bestehen, kann ich auf auf eine Mysql Datenbank bei einem Provider ausweichen.
Wenn Python das Problem ist, habe ich ein Problem. Mit anderen Sprachen, habe ich nämlich dies nicht realisieren können. Ursprünglich war gedacht es mit reinenem PHP zu erstellen.
Danke und Grüße aus Oberfranken
Chris