Tabelle mit auto_increment erstellen ???

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

Hi,

also ich spiele grade in Plone mit ein paar Tabellen rum.
Da gibts ja den SQL Befehl:

Code: Alles auswählen

create table name(
  id integer,
  title varchar,
  member varchar,
  briefDescription varchar,
  projectContext varchar
)
gibts hier eine möglichkeit die ID als Primary Key und auto increment zu machen ?

mfg carsten
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Code: Alles auswählen


id INTEGER NOT NULL
PRIMARY  KEY (id)

Damit kannst du erreichen das 'id' automatisch inkrementiert.

lg

EDIT: Mit Plone kenne ich mich nicht aus. Folgender Code Funktioniert aber mit SQLite und auch mit SQL.
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Hi,

hm ja so hab ich das auch schon probiert aber das funktioniert nicht!

Syntax error kommt:

Code: Alles auswählen

SyntaxError: unexpected token sequence.near :: 't(\n id INTEGER'*' NOT NULL,\n PR' ******************************* current state = 163 expects: ')', ',', ('nomatch1',) current token = ((-6, 'NOT'), 'NOT') (Also, the following error occurred while attempting to render the standard error message, please see the event log for full details: '@@plone') 
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab es gerade mal getestet... Es reicht in MySQL nicht die ID zum Primary-Key zu machen. Es muß explizit ein AUTO_INCREMENT angeben werden.

Also z.B. so:

Code: Alles auswählen

CREATE TABLE name (
  id INT NOT NULL AUTO_INCREMENT ,
  title VARCHAR( 5 ) NOT NULL ,
  PRIMARY KEY (id)
);

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Ich hab gerade noch mal ein altes script rausgesucht und bei dem wird ID (wenn es als Primary Key definiert ist) immer automatisch inkrementiert. Ich glaube bei Primary Keys ist das so standardmäßig. Für alle anderen Keys ist es aber notwendig, ein AUTO_INCREMENT dahinter zu hängen.

@mitch: Poste mal den Code. Die Meldung vom Traceback besagt das du irgendwo an einer stelle ein Token hast wo es nicht hingehört -> Also kurz gesagt: Du hast einen Syntaxfehler produziert.

lg
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Hm ich weiss nicht ob ich was falsch verstanden habe.

Also im Plone kann man doch solche connections machen.
Z Gadfly Database Connection

Damit hab ich eine erstellt aber das ist wohl nur so eine Interne, also da steht keine MySQL Datenbank von mir dahint.
Die Tabellen versucht Plone wohl selber in sich zu erstellen ?!
Aber aufjedenfall, kann man auch die Tabellen auch ganz normale SQL Statements los lassen usw.

Könnte mir das mal jemand etwas genauer erklären, da ich kaum material darüber finde!

Code: Alles auswählen

Site Error
An error was encountered while publishing this resource. 

SyntaxError

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 146, in publish 
Module Zope2.App.startup, line 222, in zpublisher_exception_hook 
Module ZPublisher.Publish, line 115, in publish 
Module ZPublisher.mapply, line 88, in mapply 
Module ZPublisher.Publish, line 41, in call_object 
Module Shared.DC.ZRDB.DA, line 341, in manage_test 
Module Shared.DC.ZRDB.DA, line 318, in manage_test 
Module Shared.DC.ZRDB.DA, line 455, in __call__
<SQL at /Plone/portal_skins/custom/newDB/create> 
Module Products.ZGadflyDA.db, line 108, in query 
Module Products.ZGadflyDA.gadfly.gadfly, line 322, in execute 
Module Products.ZGadflyDA.gadfly.kjParser, line 1185, in DoParse1 
Module Products.ZGadflyDA.gadfly.kjParser, line 1177, in DoParse 
Module Products.ZGadflyDA.gadfly.kjParser, line 842, in GO 
Module Products.ZGadflyDA.gadfly.kjParser, line 770, in DoOneReduction 
Module Products.ZGadflyDA.gadfly.kjParser, line 826, in ParseError 
SyntaxError: unexpected token sequence.near :: 'LE name ( \n id'*' INT NOT NULL A' ******************************* current state = 79 expects: '/', 'AND', 'ORDER', 'INTERSECT', '=', 'DESC', '*', 'FROM', 'ASC', '*', 'INTEGER', 'EXCEPT', 'BETWEEN', '<', 'WHERE', ')', 'GROUP', '-', 'NOT', ';', 'UNION', 'FLOAT', 'VARCHAR', ',', 'HAVING', '>', 'IN', '+', 'OR', 'AS', ('nomatch1',) current token = ((-8, 'user_defined_name'), 'INT') (Also, the following error occurred while attempting to render the standard error message, please see the event log for full details: '@@plone') 



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

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. 
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

mitch hat geschrieben:gibts hier eine möglichkeit die ID als Primary Key und auto increment zu machen?
Hi carsten!

Zope hat *Gadfly* eingebaut. Das ist ein **einfaches** "Relationales Datenbanksystem" das die Daten **im Speicher** hält.

Da die Daten zwar ins Dateisystem geschrieben werden, aber für Abfragen komplett im Speicher gehalten werden, ist Gadfly nur für kleine Anwendungen, Tests und zum Demonstrieren der SQL-Methoden von Zope geeignet.

Man kann einen "Primary Key" nur über einen *Index* simulieren. AutoIncrement (serielles Hochzählen eines Feldwertes) unterstützt Gadfly nicht.

- http://gadfly.sourceforge.net/

Im Zope gilt:
Additional data sources may be created by making additional directories in the var/gadfly subdirectory of your Zope installation.
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

XtraNine hat geschrieben:

Code: Alles auswählen

id INTEGER NOT NULL
PRIMARY  KEY (id)
Hi XtraNine!

Dieser Code funktioniert NUR in SQLite. Ob und wie ein AutoIncrement-Wert unterstützt wird, ist von der verwendeten Datenbank abhängig.

- Bei PostgreSQL ist es z.B. der Feldtyp SERIAL.
- Beim Microsoft SQL-Server ist es der Zusatz IDENTITY.
- Bei MySQL...

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Hi gerold.

Dank für die Info. Ich bin davon ausgegangen das SQL dass dann auch unterstützt, da ja SQLite irgendwie auf SQL basiert.

lg
Benutzeravatar
mitch
User
Beiträge: 78
Registriert: Dienstag 1. August 2006, 09:07
Kontaktdaten:

Oh ich versuche mir da grade was aufzubauen! :?

3 Tabellen die ich aber nur mehr oder weniger als Hilfe benötige als Kopplung zwischen meinen Member und Projekten...

Ich gehe mal davon aus, da funktionieren dann auch nur beschränkt SELECT statements ?!
Hab nämlich versucht:

Code: Alles auswählen

 select * from project where id=nummer
Dabei hab ich "nummer" oben als argument eingetragen...halt das ich nummer beschreibe mit nem Wert und das danach dann gesucht wird ... wie 2 z.B. aber da kam auch ne Fehler meldung.. :P

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

mitch hat geschrieben:

Code: Alles auswählen

 select * from project where id=nummer
Hi mitch!

Das ist normales SQL. Das kann Gadfly sicher. Allerdings solltest du statt ``nummer`` ``<dtml-sqlvar nummer type="int">`` schreiben.

Hier wirds beschrieben:
- http://www.zope.org/Documentation/Books ... abases.stx
- http://www.zope.org/Documentation/Books ... s.stx#3-43

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:

Hallo,

ah danke Gerold.
Nun soll ich aber von gadfly und soll mit einer MySQL Datenbank arbeiten. Na ja mache ich das halt... :roll:

Da hab ich ZMySQLDA mal runter geladen und es in den Product Ordner entpackt. Aber da ist ja nix dabei, weder Anleitung noch eine Installations Datei!
Diesen Adapter brauch ich doch, um eine Verbindung mit einer MySQL Datenbank herzustellen ?!
Kann mir jemand erklären wie ich es schaffe, dass in Plone einzubinden? Oder kennt jemand eine vernünftige Seite wo das erklärt wird?
Alles was ich bisher darüber gefunden habe war uralt!

Okay was ich gefunden haben war das:
http://www.augusta.de/~rones/documents/ ... stallation

Ich hab das entpackt, in den Ordner Zope\lib\python\products kopiert und plone neugestartet aber in diesem Add Menü ist "Z MySQL Database .. " nicht zu finden!

mfg carsten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

mitch hat geschrieben:Da hab ich ZMySQLDA mal runter geladen und es in den Product Ordner entpackt. Aber da ist ja nix dabei, weder Anleitung noch eine Installations Datei!
Hi mitch!

Du musst hier im Python-Forum suchen. ;-)

http://www.python-forum.de/topic-5369.html

Es gibt jetzt aber auch eine **ZSQLiteDA**. Das ist sicher eine gute Alternative zu "Gadfly".

Im Laufe des Vormittags probiere ich ZSQLiteDA mal aus und schreibe dann wie man es installiert.

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:

Hi Gerold,

ich habs jetzt mal nach deinem tutorial gemacht und siehe da, es hat geklappt!

Ich hab auch schon erste Statements abgesetzt aber ich eröffne lieber ein neues Thread, da dieser nicht mehr viel mit meinem Neuen Problem zu tun hat! :oops: :P

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

gerold hat geschrieben:Im Laufe des Vormittags probiere ich ZSQLiteDA mal aus und schreibe dann wie man es installiert.
...wie gesagt -- so geschehen.

Hier ist mein Erfahrungsbericht:

http://gelb.bcom.at/trac/misc/wiki/Tuto ... stallieren

lg
Gerold
:-)

PS: Ich finde es toll, dass jetzt auch SQLite mit Zope funktioniert. Meist braucht man nichts anderes.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten