[PYTHON] Essayez d'utiliser SQLAlchemy + MySQL (partie 2)

Ceci est une continuation de Dernière fois.

Je suis le tutoriel, mais je pense que ça s'est bien passé, sauf pour la première pierre d'achoppement.

Pourtant, notez ce qui m'inquiétait un peu.

Spécifiez le nombre de caractères dans la colonne

Pour MySQL, vous devez toujours spécifier le nombre de caractères dans la colonne. Il ne peut pas être omis comme "sqlalchemy.Column ()".

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)

[Message d'erreur] sqlalchemy.exc.CompileError: (in table 'students', column 'name'): Can't generate DDL for NullType(); did you forget to specify a type on this Column?

Instruction SQL à passer à l'argument de la fonction de filtre

L'instruction SQL passée à l'argument de la fonction de filtre utilise explicitement la fonction de texte. Si vous n'utilisez pas la fonction de texte, vous recevrez un avertissement.

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"))

[Message d'alerte] 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

Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser Pillow sur iPython (partie 1)
Essayez d'utiliser Pillow sur iPython (partie 2)
Essayez d'utiliser Pillow sur iPython (partie 3)
Connectez-vous à MySQL à l'aide de Flask SQL Alchemy
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
Essayez d'utiliser PythonTex avec Texpad.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser scikit-learn (1) - Clustering K par méthode moyenne
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser matplotlib avec PyCharm
Essayez d'utiliser Azure Logic Apps
Essayez d'utiliser Kubernetes Client -Python-
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser l'API Twitter
Essayez d'utiliser OpenCV sur Windows
Essayez la programmation Linux normale, partie 2
Essayez d'utiliser Jupyter Notebook de manière dynamique
Essayez la programmation Linux normale, partie 3
Essayez d'utiliser AWS SageMaker Studio
Essayez de traduire un PDF anglais, partie 1
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'utiliser l'API Twitter
Essayez la programmation Linux normale, partie 4
Essayez d'utiliser la fonction de modèle de Django
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser la fonction de brouillon de Pelican
Essayez la programmation Linux normale, partie 6
Essayez d'utiliser pytest-Overview and Samples-
Essayez d'utiliser le folium avec anaconda
Générer des définitions de table SQL Alchemy à partir d'un serveur MySQL existant à l'aide de sqlacodegen
Essayez d'analyser le mahjong familial en ligne à l'aide de Python (PARTIE 1: Prendre des données)
Essayez d'utiliser l'API Admin de la passerelle Janus
[Statistiques] [R] Essayez d'utiliser la régression par points de division.
Essayez d'utiliser Spyder inclus dans Anaconda
Essayez d'utiliser des modèles de conception (édition exportateur)
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2