Dies ist eine Fortsetzung von Letztes Mal.
Ich folge dem Tutorial, aber ich denke, es lief reibungslos, bis auf den ersten Stolperstein.
Notieren Sie sich trotzdem, worüber ich mir ein wenig Sorgen gemacht habe.
Für MySQL müssen Sie immer die Anzahl der Zeichen in der Spalte angeben. Es kann nicht wie "sqlalchemy.Column ()" weggelassen werden.
sqlalchemy_test2.py
import sqlalchemy
import sqlalchemy.ext.declarative
Base = sqlalchemy.ext.declarative.declarative_base()
class Student(Base):
__tablename__ = 'students'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(20))
kana = sqlalchemy.Column(sqlalchemy.String(40))
url = 'mysql+pymysql://root:@localhost/test_db?charset=utf8'
engine = sqlalchemy.create_engine(url, echo=True)
Base.metadata.create_all(engine)
[Fehlermeldung]
sqlalchemy.exc.CompileError: (in table 'students', column 'name'): Can't generate DDL for NullType(); did you forget to specify a type on this Column?
Die an das Argument der Filterfunktion übergebene SQL-Anweisung verwendet explizit die Textfunktion. Wenn Sie die Textfunktion nicht verwenden, erhalten Sie eine Warnung.
sqlalchemy_test3.py
import sqlalchemy
import sqlalchemy.orm
import sqlalchemy.ext.declarative
from sqlalchemy import text
Base = sqlalchemy.ext.declarative.declarative_base()
class Student(Base):
__tablename__ = 'students'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(20))
kana = sqlalchemy.Column(sqlalchemy.String(40))
url = 'mysql+pymysql://root:@localhost/test_db?charset=utf8'
engine = sqlalchemy.create_engine(url, echo=False)
Session = sqlalchemy.orm.sessionmaker(bind=engine)
session = Session()
students = session.query(Student).filter("id=20") # SAWarning: Textual SQL expression
students = session.query(Student).filter(text("id=20"))
[Warnmeldung]
SAWarning: Textual SQL expression 'id=20' should be explicitly declared as text('id=20') (this warning may be suppressed after 10 occurrences) {"expr": util.ellipses_string(element)})
Recommended Posts