Hallo,
Gibt es die Möglichkeit (außer SQLALCHEMY) die Datenbanktypen SQLITE und MYSQL gleich anzusprechen?
Das heißt beim execute z.B. der gleiche Platzhalter).
Ich dachte bisher ich könnte sqlite und mysql genau gleich ansprechen, wenn ich doch nur den Cursor auf eine Variable wie z.B. DB setze.
Doch das scheint nicht so zu funktionieren.
Python meldet
"Not all arguments converted during string formatting"
Scheint also was mit dem Platzhalter oder so nicht zu stimmen.
Hoffe ihr wisst Bescheid.
Gruß Chris
SQLITE und MYSQL gleich ansprechen
Hallo auch,
Schreib dir doch selber eine Interface-Mittelschicht und Wrapper für beide DatenbankManagementSysteme.
Wenn du plietsch bist, schreibst du dir PythonCode- oder JustInTime-Generatoren, um nicht sämtliche SQL-Statements doppelt, dreifach, ... oder wieviele DBMS du noch supporten möchtest, schreiben zu müssen.
>>Masaru<<
Schreib dir doch selber eine Interface-Mittelschicht und Wrapper für beide DatenbankManagementSysteme.
Wenn du plietsch bist, schreibst du dir PythonCode- oder JustInTime-Generatoren, um nicht sämtliche SQL-Statements doppelt, dreifach, ... oder wieviele DBMS du noch supporten möchtest, schreiben zu müssen.
>>Masaru<<
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Gibt es einen speziellen Grund, warum du SQLAlchemy nicht magst?sprudel hat geschrieben:Gibt es die Möglichkeit (außer SQLALCHEMY) die Datenbanktypen SQLITE und MYSQL gleich anzusprechen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich habe mir das mal ein bisschen angeguckt, und es wirkt alles so überladen. Oder ist es da auch einfach möglich ein Query auszuführen und dann die Werte ganz normal in einer While schleife zu iterieren?Leonidas hat geschrieben:Gibt es einen speziellen Grund, warum du SQLAlchemy nicht magst?sprudel hat geschrieben:Gibt es die Möglichkeit (außer SQLALCHEMY) die Datenbanktypen SQLITE und MYSQL gleich anzusprechen?
Habe das überall im Internet nämlich ganz anders gesehen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Aus dem Tutorial:sprudel hat geschrieben:Oder ist es da auch einfach möglich ein Query auszuführen und dann die Werte ganz normal in einer While schleife zu iterieren?
Habe das überall im Internet nämlich ganz anders gesehen
Code: Alles auswählen
>>> for user in session.query(User):
... print user.name
ed
wendy
mary
fred
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ehm, du hast doch da ein Query welches alle User-Objekte aus der Datenbank holt?! Sieh dir doch mal das Tutorial an.sprudel hat geschrieben:Und wie mache ich überhaupt erst die Querys?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
HalloLeonidas hat geschrieben:Ehm, du hast doch da ein Query welches alle User-Objekte aus der Datenbank holt?! Sieh dir doch mal das Tutorial an.sprudel hat geschrieben:Und wie mache ich überhaupt erst die Querys?
nehmen wir jetzt einmal als Beispiel "Select id,fname,lname from users order by regdate desc limit 5"
ich möchte das jetzt in einer Schleife alles durchlaufen.
Geht das?
Bzw. wo finde ich überhaupt das Tutorial? In Google habe ich nur ein Englisches gefunden, stehe aber vermutlich dabei wieder ziemlich auf dem Schlauch.
Chris
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Es gibt nicht alles auf deutsch 
SQLalchemy.org da gibt es das offizielle Tutorial.
aber das hier http://entwickler.de/zonen/portale/psec ... ,1033.html ist auf deutsch und ähnlich aufgebaut.

SQLalchemy.org da gibt es das offizielle Tutorial.
aber das hier http://entwickler.de/zonen/portale/psec ... ,1033.html ist auf deutsch und ähnlich aufgebaut.
Verlang ich doch auch nichtSr4l hat geschrieben:Es gibt nicht alles auf deutsch![]()

Aber versteh doch - ich bin 16 Jahre alt. Da ist ein Fachenglisch gelegentlich schon zu viel verlangt, auch wenn ich mein Englisch in diesem Bereich als überdurchschnittlich einschätzt. Aber es macht das ganze leider ungemein schwerer.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Uhh? Also mit 16 war das überhaupt kein Problem für mich. Außerdem ist IT-Englisch noch mal eine runde einfacher als normales, umgangssprachliches Englisch.sprudel hat geschrieben:Aber versteh doch - ich bin 16 Jahre alt. Da ist ein Fachenglisch gelegentlich schon zu viel verlangt, auch wenn ich mein Englisch in diesem Bereich als überdurchschnittlich einschätzt. Aber es macht das ganze leider ungemein schwerer.
Wenn du dir das Tutorial angesehen hättest, könntest du durchaus drauf gekommen sein:
Code: Alles auswählen
import datetime
from sqlalchemy import desc, MetaData, Column, Unicode, DateTime, create_engine
from sqlalchemy.orm import sessionmaker, mapper
engine = create_engine('sqlite:///:memory:', echo=True)
metadata = MetaData()
users_table = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('fname', Unicode(40)),
Column('lname', Unicode(40)),
Column('regdate', DateTime)
)
metadata.create_all(engine)
class User(object): pass
mapper(User, users_table)
first_user = User()
first_user.fname = 'First'
first_user.lname = 'Last'
first_user.regdate = datetime.datetime.now()
Session = sessionmaker(bind=engine, autoflush=True, transactional=True)
session = Session()
session.save(first_user)
for user in session.query(User).order_by(desc(users_table.c.regdate)).all():
print user.fname, user.lname
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kann sich ja jeder ein Bild von machen: ORM tutorial - sehr zu empfehlen (da ist auch beschrieben, dass man LIMIT mittels Slicing hinbekommt, was ich in meinem Beispiel nicht gezeigt habe). Ordering ist hier dokumentiert und desc() hat auch seine Dokumentation.
Es mag für den Anfang etwas komplex erscheinen, aber wenn man unbedingt will kann man mittels ``declarative`` sich das leben etwas vereinfachen oder mittels Elixir das Verhalten etwas an das von anderen ORMs anpassen, welche nach dem ActiveRecord-Pattern arbeiten, was für den Anfang oft simpler zu verstehen ist.
Es mag für den Anfang etwas komplex erscheinen, aber wenn man unbedingt will kann man mittels ``declarative`` sich das leben etwas vereinfachen oder mittels Elixir das Verhalten etwas an das von anderen ORMs anpassen, welche nach dem ActiveRecord-Pattern arbeiten, was für den Anfang oft simpler zu verstehen ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo.
Also ich werder mich einmal ein bisschen einlernen in Sqlalchemy. Das sieht interessanter aus als ich es für den ersten Blick gehalten habe
Zum Thema IT-Englisch:
Ich habe nicht wirklich große Probleme damit. Es ist nur mühselig wenn man etwas komplett neues lernt. Versteht mich nicht falsch
Also ich werder mich einmal ein bisschen einlernen in Sqlalchemy. Das sieht interessanter aus als ich es für den ersten Blick gehalten habe

Zum Thema IT-Englisch:
Ich habe nicht wirklich große Probleme damit. Es ist nur mühselig wenn man etwas komplett neues lernt. Versteht mich nicht falsch

- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Aber dennoch empfiehlt es sich die Scheuklappen fallen zu lassen, da:sprudel hat geschrieben: Zum Thema IT-Englisch:
Ich habe nicht wirklich große Probleme damit. Es ist nur mühselig wenn man etwas komplett neues lernt. Versteht mich nicht falsch
1.) Diese Barriere ja durch Übung irgend wann quasi wegfällt! (Im Gegensatz zum generellen Stuidum von Dokus / Tutotials)
2.) Es gerade zu Schulzeiten noch eine gute Übung sein kann, sein Verständnis fürs Englische zu verbessern

Also, ran an die Bulletten

Nagut, ich werd mich dran wagenHyperion hat geschrieben:Aber dennoch empfiehlt es sich die Scheuklappen fallen zu lassen, da:sprudel hat geschrieben: Zum Thema IT-Englisch:
Ich habe nicht wirklich große Probleme damit. Es ist nur mühselig wenn man etwas komplett neues lernt. Versteht mich nicht falsch
1.) Diese Barriere ja durch Übung irgend wann quasi wegfällt! (Im Gegensatz zum generellen Stuidum von Dokus / Tutotials)
2.) Es gerade zu Schulzeiten noch eine gute Übung sein kann, sein Verständnis fürs Englische zu verbessern(Zumal die Motivation hier sehr intrinsisch ist - im Gegensatz zu Hausaufgaben)
Also, ran an die Bulletten



Ich schaff das schon.