前提
flaskで緯度経度を用いて地図表示するwebアプリを開発をしています。
その際のデータベースのテーブル作成時にエラーが発生しました。
実現したいこと
- 緯度経度をテーブルに保存するために、double型のカラムを作成したい。
発生している問題・エラーメッセージ
sqlalchemy.exc.CompileError: (in table 'memos', column 'lat'): Can't generate DDL for NullType(); did you forget to specify a type on this Column?
該当のソースコード
python
1from flask import Flask, request 2from flask_sqlalchemy import SQLAlchemy 3from sqlalchemy.dialects.mysql import INTEGER, VARCHAR # MySQLのテーブルを作る時に必要 4 5 6app = Flask(__name__) 7 8# MySQLに接続するための情報 9app.config["SQLALCHEMY_DATABASE_URI"] = 'mysql+pymysql://{user}:{password}@{host}/{db_name}?charset=utf8'.format(**{ 10 'user': "root", 11 'password': "{{パスワード}}", 12 'host': "localhost", 13 'db_name': "test" 14 }) 15# おまじない 16app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False 17 18# dbの初期化 19db = SQLAlchemy(app) 20 21class Memo(db.Model): 22 """ 23 Memoモデルの定義 24 """ 25 __tablename__ = "memos" 26 27 id = db.Column("id", INTEGER(11), primary_key=True) 28 name = db.Column(db.Text) 29 adress = db.Column(db.Text) 30 lat = db.Column(db.double(9,6)) 31 lng = db.Column(db.double(9,6)) 32 date = db.Column(db.Text) 33 score = db.Column(db.Integer) 34 review = db.Column(db.Text) 35 image = db.Column(db.BLOB)
python(対話モード)
1>>> from app import app 2>>> from app import db 3>>> with app.app_context(): 4... db.create_all()
試したこと
調べましたが、double型が使えないなどは書いていなかったので、私のコードに問題があると考えています。
もしくはMySQLのバージョン(8.0.31)に問題があるのでしょうか
補足情報(FW/ツールのバージョンなど)
click==8.1.3
colorama==0.4.5
Flask==2.2.2
Flask-Markdown==0.3
Flask-SQLAlchemy==2.5.1
greenlet==1.1.3
itsdangerous==2.1.2
Jinja2==3.1.2
Markdown==3.4.1
MarkupSafe==2.1.1
mysql-connector-python==8.0.31
PyMySQL==1.0.2
SQLAlchemy==1.4.41
Werkzeug==2.2.2
MySQL==8.0.31
回答1件
あなたの回答
tips
プレビュー