Immobilienportal

Django, Flask, Bottle, WSGI, CGI…
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: Was meinst Du mit Standardhoster? PostgreSQL ist nicht so resourcenhungrig, als dass es nicht auch auf einem kleinen Server laufen würde und wenn Dein Projekt eine gewisse Größe erreichen wird, wird Dir Dein Hoster um die Ecke sowieso nicht mehr reichen.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Naja, bei meinem (Metanet) habe ich im Admin gesehen, dass die eigentlich nur MySQL haben. Ich habe gestern mal Postgres gezogen und auf meinem Ubuntu installiert ("sudo apt-get install postgresql-9.4"). Allerdings konnte ich den Server nicht starten.

Die Anleitung ist leider ziemlich "spartanisch":
http://www.postgresql.org/docs/9.4/inte ... start.html

pgAdmin III habe ich auch einmal installiert.
Benutzeravatar
Käptn Haddock
User
Beiträge: 169
Registriert: Freitag 24. März 2006, 14:27

Für den Anfang sollte es sqlite für dich tun. Da gibt es auch spatialite, womit du geographische Abfragen erstellen kannst.
Wenn du dann feststellst, das sqlite nichht mehr genügt, kannst du dich z.B. mit PostgreSQL befassen. Da ist der Umstieg recht einfach, M[y|aria]SQL hat das grössere Unterschiede, die man sich erarbeiten muß. Aber das wirst du bis dann selbst abschätzen können ;)

Gruß Uwe
---------------------------------
have a lot of fun!
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Danke einem guten Tutorial weiss ich jetzt schon, wie ich dort Tabellen erstelle. Frage? Was wird mit dem gelobten bottle-sqlalchemy einfacher? Wie sehen dort die Befehle aus?

Code: Alles auswählen

import sqlite3
db = sqlite3.connect('picnic.db')
db.execute("CREATE TABLE picnic (id INTEGER PRIMARY KEY, item CHAR(100) NOT NULL, quant INTEGER NOT NULL)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('bread', 4)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('cheese', 2)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('grapes', 30)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('cake', 1)")
db.execute("INSERT INTO picnic (item,quant) VALUES ('soda', 4)")
db.commit()
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: dank einem schlechten Tutorial weißt Du jetzt, wie man es nicht machen sollte!

Code: Alles auswählen

for item, quant in [('bread', 4), ('cheese', 2)]:
    db.execute("INSERT INTO picnic (item,quant) VALUES (?, ?)", (item, quant))
BlackJack

Speziell an der Stelle kann man auch `executemany()` erwähnen. :-)
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Codeoptimierung ist immer möglich. Aber wo finde ich die Definition zu executemany()?

Code: Alles auswählen

dir(sqlite3)
['Binary', 'Cache', 'Connection', 'Cursor', 'DataError', 'DatabaseError', 'Date', 'DateFromTicks', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'OptimizedUnicode', 'PARSE_COLNAMES', 'PARSE_DECLTYPES', 'PrepareProtocol', 'ProgrammingError', 'Row', 'SQLITE_ALTER_TABLE', 'SQLITE_ANALYZE', 'SQLITE_ATTACH', 'SQLITE_CREATE_INDEX', 'SQLITE_CREATE_TABLE', 'SQLITE_CREATE_TEMP_INDEX', 'SQLITE_CREATE_TEMP_TABLE', 'SQLITE_CREATE_TEMP_TRIGGER', 'SQLITE_CREATE_TEMP_VIEW', 'SQLITE_CREATE_TRIGGER', 'SQLITE_CREATE_VIEW', 'SQLITE_DELETE', 'SQLITE_DENY', 'SQLITE_DETACH', 'SQLITE_DROP_INDEX', 'SQLITE_DROP_TABLE', 'SQLITE_DROP_TEMP_INDEX', 'SQLITE_DROP_TEMP_TABLE', 'SQLITE_DROP_TEMP_TRIGGER', 'SQLITE_DROP_TEMP_VIEW', 'SQLITE_DROP_TRIGGER', 'SQLITE_DROP_VIEW', 'SQLITE_IGNORE', 'SQLITE_INSERT', 'SQLITE_OK', 'SQLITE_PRAGMA', 'SQLITE_READ', 'SQLITE_REINDEX', 'SQLITE_SELECT', 'SQLITE_TRANSACTION', 'SQLITE_UPDATE', 'Statement', 'Time', 'TimeFromTicks', 'Timestamp', 'TimestampFromTicks', 'Warning', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'adapt', 'adapters', 'apilevel', 'collections', 'complete_statement', 'connect', 'converters', 'datetime', 'dbapi2', 'enable_callback_tracebacks', 'enable_shared_cache', 'paramstyle', 'register_adapter', 'register_converter', 'sqlite_version', 'sqlite_version_info', 'threadsafety', 'time', 'version', 'version_info', 'x']
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

meego hat geschrieben:Codeoptimierung ist immer möglich. Aber wo finde ich die Definition zu executemany()?
In der Doku?
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Danke. Also vermutlich im Cursorobjekt.
Antworten