SQLObject... Kleines Beispiel geht schon nicht...

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich möchte mir mal SQLObject anschauen... Aber die Beispiele auf der Seite machen immer ein from sqlobect import * Das ist doch aber doof...

Deswegen hab ich mal versucht das kleine Beispiel zu ändern:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sqlobject

connection = sqlobject.connectionForURI('sqlite:/tmp/test.db')
sqlobject.processConnection = connection

class Person(sqlobject.SQLObject):
	fname = sqlobject.StringCol()
	mi = sqlobject.StringCol(length=1, default=None)
	lname = sqlobject.StringCol()

Person.createTable()
Allerdings geht's so nicht:

Code: Alles auswählen

Traceback (most recent call last):
  File "test1.py", line 17, in ?
    Person.createTable()
  File "/usr/lib/python2.4/site-packages/sqlobject/main.py", line 975, in createTable
    cls._connection.createTable(cls)
AttributeError: 'NoneType' object has no attribute 'createTable'
EDIT: Hier gibt es ein paar Beispiele: http://www-128.ibm.com/developerworks/l ... ythonsqlo/
Aber da wird ein "from Connection import conn" gemacht, welches bei mir nicht geht, da Connection nicht existiert?!?!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So geht's, bis zum select:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sqlobject

connection = sqlobject.connectionForURI('sqlite:///tmp/test.db')
sqlobject.SQLObject._connection = connection

class Person(sqlobject.SQLObject):
    fname = sqlobject.StringCol()
    mi = sqlobject.StringCol(length=1, default=None)
    lname = sqlobject.StringCol()

Person._connection.debug = True

print "createTable:"
Person.createTable(ifNotExists=True)

print "create Person1:"
Person(fname='Bob', lname='Hope')

print "get Person 1"
p1 = Person.get(1)
print p1

p1.mi = "middleInitial"
print p1

print "create Person2:"
Person(fname='Joe', mi='middleInitial', lname='Dope')

peeps = Person.select(Person.q.mi='middleInitial')
print peeps

Code: Alles auswählen

>python -u test1.py
  File "test1.py", line 32
    peeps = Person.select(Person.q.mi='middleInitial')
SyntaxError: keyword can't be an expression

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
raist1314
User
Beiträge: 52
Registriert: Dienstag 21. September 2004, 06:58
Wohnort: Adelzhausen
Kontaktdaten:

jens hat geschrieben:So geht's, bis zum select:

Code: Alles auswählen

peeps = Person.select(Person.q.mi='middleInitial')
print peeps
Was soll das q in Person.q.mi ???

Sebastian
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das weiß ich auch nicht, hab ich aus dem Beispiel http://www-128.ibm.com/developerworks/l ... ythonsqlo/ und konnte auch nicht nachvollziehen woher q kommt...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
raist1314
User
Beiträge: 52
Registriert: Dienstag 21. September 2004, 06:58
Wohnort: Adelzhausen
Kontaktdaten:

Habs gefunden... q deutet wohl auf einen Query unter Einbeziehung der Spalte hin.

Code: Alles auswählen

# dein beispiel klappt nicht
peeps = Person.select(Person.q.mi='middleInitial') 

# ich nehme an, du wolltest das
peeps = Person.select(Person.q.mi == 'middleInitial') 
print peeps 
Gruss

Sebastian
Antworten