Exception von MySql Datenbank normal ?

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Exception von MySql Datenbank normal ?

Beitragvon mitch » Mittwoch 15. November 2006, 15:19

Hi,

ich hab mich jetzt dazu entschieden, meine erstellten Projekte in einer externen Datenbank zu speichern. Ich hab mich für MySQL entschieden.

Dafür hab ich MySQL - pyhton installiert und ZMySQLDA, was ich für die Verbindung zu meiner DB brauchte.

Jetzt hab ich auch schon erste Statements abgesetzt auf mein DB.
Wenn ich ein insert statment abgesetzt habe, ging alles reibungslos aber eingebaut in ein Template kam ein Fehler.
So sieht das eingabe Template aus!

Code: Alles auswählen

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="plone">
<head>
<script language="javascript" src="trimpath/template.js"></script>
</head>
<body>
<div metal:fill-slot="main"
     tal:define="is_manager python: checkPermission('Manage portal', here)">

    <h1 i18n:translate="heading_member_search">Search for users</h1>

    <p i18n:translate="description_member_search">
    This search form enables you to find users by specifying one or more
    search criteria.
    </p>
   
<script language="javascript">
function Hinzufuegen () {
  NeuerEintrag = new Option(document.newProject.member_list.value, document.newProject.member_list.value, false, true);
  document.newProject.mitarbeiter.options[document.newProject.mitarbeiter.length] = NeuerEintrag;
  document.newProject.member_list.value = "";
}
</script>
<script language="javascript">
function Loeschen () {
  i=0;
  selectedMember = document.newProject.mitarbeiter.value;
  //alert (selectedMember);
  mitgliederAnzahl= document.newProject.mitarbeiter.length;
  //alert (mitgliederAnzahl);   
  for(i = 0; i < mitgliederAnzahl; i++){
    listMember = document.newProject.mitarbeiter.options[i].value;
   //alert (listMember);
   //alert (i);
   if(listMember== selectedMember){
       //alert ("geloescht");
       document.newProject.mitarbeiter.options[i]= null;
      break;
   }
  }
}
</script>
     <form action="gespeichert"
          method="post"
          name="newProject">
       
        <fieldset>
            <legend i18n:translate="legend_member_search_criteria">User Search Criteria</legend>
      
            <div class="field">
                <label i18n:translate="label_titel">Titel</label><br>
   
                <input type="text"
                       name="titel"
                  value="Mein erstes Plone Projekt"
                       size="25"
                       tabindex=""
                       tal:attributes="tabindex tabindex/next;"
                       />
            </div>
         
         <div class="field">
            <select name="mitarbeiter" size="5">
            <select>
         </div>
         
         <div class="field"
              tal:define="members python:here.getMitarbeiter()">
            <select name="member_list">
               <tal:block tal:repeat="member members">
                  <option tal:attributes="value member/name">
                     <h1 tal:content="member/name" />
                  </option>
               </tal:block>
                </select>
         </div>

         <!--<div class="field">
          <input type="text"
                 name="member_list">
         </div>-->
         
         <div class="field">
            <input class="context"
                  size="150"
                  tabindex=""
                  name="add"
                  type="button"
                  onclick="Hinzufuegen()"
                  value="Member hinzufuegen"
                  tal:attributes="tabindex tabindex/next;" />
         </div>

         <div class="field">
            <input class="context"
                  size="150"
                  tabindex=""
                  name="delete"
                  type="button"
                  onclick="Loeschen()"
                  value="Member loeschen     "
                  tal:attributes="tabindex tabindex/next;" />
         </div>
   <!--      <div class="field">
            <input class="context"
                  tabindex=""
                  name=""
                  type="button"
                  onclick="Members()"
                  value="Option einen Namen geben"
                  tal:attributes="tabindex tabindex/next;" />
         </div>
      -->   
            <div class="field">
                <label i18n:translate="label_briefDescription">Kurzbeschreibung</label><br>
   
                <input type="text"
                       name="kurzbeschreibung"
                       size="25"
                       tabindex=""
                       tal:attributes="tabindex tabindex/next;"
                       />
            </div>
            
            <div class="field">
                <label i18n:translate="label_projectContext">Projektinhalt</label><br>
   
                <input type="text"
                       name="projektinhalt"
                       size="25"
                       tabindex=""
                       tal:attributes="tabindex tabindex/next;"
                       />
            </div>
         
            <div class="formControls">
                <input class="context"
                       tabindex=""
                       type="submit"
                       name="submit"
                       value="Save"
                       i18n:attributes="value label_save;"
                       tal:attributes="tabindex tabindex/next;"
                       />
            </div>
        </fieldset>
    </form>

</div>
</body>
</html>


Das hier ist die Seite wo ich die Daten speichere und noch mal ausgeben will:

Code: Alles auswählen

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
      lang="en"
      metal:use-macro="here/main_template/macros/master"
      i18n:domain="plone">

<metal:block fill-slot="top_slot"
             tal:define="dummy python:request.set('disable_border',1)" />
<body>

<div metal:fill-slot="main"
       tal:define="is_manager python: checkPermission('Manage portal', here);
                    save python:here.insertProjekt(request);
                    member python:request.get('mitarbeiter', None);
               titel python:request.get('titel', None);
               kurzbeschreibung python:request.get('kurzbeschreibung', None);
               projektinhalt python:request.get('projektinhalt', None);">

    <h1>Speicher Vorgang</h1>

    <!--<div tal:content="request"></div>-->
    <div tal:content="member">
   </div>
   <div tal:content="titel">
   </div>
   <div tal:content="kurzbeschreibung">
   </div>
   <div tal:content="projketinhalt">
   </div>
   
</div>
</body>
</html>


Hier kommt dann immer der Fehler:
[code=]
Site Error
An error was encountered while publishing this resource.

_mysql_exceptions.NotSupportedError

Sorry, a site error occurred.

Traceback (innermost last):

Module ZPublisher.Publish, line 194, in publish_module_standard
Module Products.PlacelessTranslationService.PatchStringIO, line 34, in new_publish
Module ZPublisher.Publish, line 157, in publish
Module Zope2.App.startup, line 243, in abort
Module transaction._manager, line 107, in abort
Module transaction._transaction, line 507, in abort
Module transaction._transaction, line 580, in abort
Module Shared.DC.ZRDB.TM, line 64, in abort
Module Products.ZMySQLDA.db, line 328, in _abort
NotSupportedError: (1196, "Warning: Some non-transactional changed tables couldn't be rolled back")



--------------------------------------------------------------------------------

Troubleshooting Suggestions

The URL may be incorrect.
The parameters passed to this resource may be incorrect.
A resource that this resource relies on may be encountering an error.
For more detailed information about the error, please refer to error log.

If the error persists please contact the site maintainer. Thank you for your patience.
[/code]

Entschuldigt bitte den vielen Quellcode aber ich weiß ganz erhlich nicht, wo ich den Fehler suchen sollte, da ja wie gesagt das Statement ohne Templates funktioniert.
[code=]
insert into projekt
values(
'',
<dtml-sqlvar titel type="string">,
<dtml-sqlvar mitarbeiter type="string">,
<dtml-sqlvar kurzbeschreibung type="string">,
<dtml-sqlvar projektinhalt type="string">
)
[/code]

Ach ja und die Fehlermeldung kommt aber die Daten werden Trotzdem eingetragen.

2. Problem:
Ich speichere oben in der Liste meine Mitarbeiter aber im Request auf der der nächsten Seite wird immer nur der letzte Mitarbeiter der Liste angezeigt bzw. mit übergeben. Weiß jemand weshalb ? :shock:

mfg mitch

ps: noch mal sorry wegen dem vielen Quelltext[/code]
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Beitragvon mitch » Donnerstag 16. November 2006, 09:59

hi,

ja ich hab den Fehler gefunden! :oops:

Aber meine 2. Frage konnte ich immer noch nicht lösen.. ?

Weil ich mir auf meinem Template eine liste mit Mitarbeitern zusammen stelle und beim senden, will ich alle senden und nicht nur den angewählten! Ist das möglich ?

mfg mitch
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 16. November 2006, 10:56

Hi mitch!

Ich glaube, dass du dich in ein Chaos reinwurstelst. Tu es nicht!
Arbeite unter Zope mindestens mit einem Dreiteiler.

Schicke die Daten vom Formular an ein Python-Script und nicht an eine Seitenvorlage. Lass das Python-Script alles tun, damit die Daten gespeichert werden. Übergebe, vom Python-Script aus, Daten zur Anzeige an eine weitere Seitenvorlage. Diese hat dann nichts mehr mit der Logik dahinter zu tun, sondern zeigt die Daten nur mehr an.

Seitenvorlage --> Python-Script --> Seitenvorlage
(Dateneingabe) --> (Datenauswertung) --> (Bestätigung)

Siehe auch: http://www.python-forum.de/post-43359.html#43359

Unter Plone solltest du sogar einen Schritt weiter gehen und Controller Page Templates verwenden.

Bitte lies dir das mal durch: http://www.zope.de/dokumentation/ploneb ... -verwenden

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Beitragvon mitch » Donnerstag 16. November 2006, 13:00

Hi,

ja das habe ich mir auch schon gedacht.
Ich werde die Formulare noch mit einem python script (welches speichert) trennen! Somit weiss ich auch direkt wo der Fehler auftritt!

mfg mitch

ps: aber ne liste kann ich immer noch nicht versenden! :D

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder