Python 表使用Flask SQLAlchemy创建,但它们不会显示在sqlite命令行(shell)上
我正在使用flask SQLAlchemy和以下结构文件开发一个flask应用程序。当我创建数据库(db.sqlite3)并在sqlite命令行Python 表使用Flask SQLAlchemy创建,但它们不会显示在sqlite命令行(shell)上,python,sqlite,sqlalchemy,flask-sqlalchemy,Python,Sqlite,Sqlalchemy,Flask Sqlalchemy,我正在使用flask SQLAlchemy和以下结构文件开发一个flask应用程序。当我创建数据库(db.sqlite3)并在sqlite命令行sqlite>.tables上写入时,创建到db.py文件中的表(列名称)不会显示在shell中。没有任何消息错误。只是当我编写这个命令时,shell没有显示任何内容。我尝试过不同的选择,我不知道该怎么办了如何获取shell以显示表的列? 文件树: |-PROBATINAS_2 (proyect name) |-probatina |- __
sqlite>.tables
上写入时,创建到db.py文件中的表(列名称)不会显示在shell中。没有任何消息错误。只是当我编写这个命令时,shell没有显示任何内容。我尝试过不同的选择,我不知道该怎么办了如何获取shell以显示表的列?
文件树:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
为这些文件编写的代码如下所示:
init.py:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
db.py:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
.env:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
app.py:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
config.py:
|-PROBATINAS_2 (proyect name)
|-probatina
|- __init__.py
|- db.py
|- db.sqlite3 (database)
|-venv
|- Include
|- Lib
|- Scripts
|-.env
|-app.py
|-config.py
from flask import Flask
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
from probatina import app
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime, timedelta
SQLALCHEMY_DATABASE_URI = app.config['SQLALCHEMY_DATABASE_URI']
SQLALCHEMY_TRACK_MODIFICATIONS = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
db = SQLAlchemy(app)
db.create_all()
#db.init_app(app)
class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
address = db.Column(db.String(500), nullable=False)
city = db.Column(db.String(50), nullable=False)
postcode = db.Column(db.String(50), nullable=False)
email = db.Column(db.String(50), nullable=False, unique=True)
orders = db.relationship('Order', backref='customer')
order_product = db.Table('order_product',
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), primary_key=True),
db.Column('product_id', db.Integer, db.ForeignKey('product.id'), primary_key=True)
)
class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
order_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
shipped_date = db.Column(db.DateTime)
delivered_date = db.Column(db.DateTime)
coupon_code = db.Column(db.String(50))
customer_id = db.Column(db.Integer, db.ForeignKey('customer.id'), nullable=False)
products = db.relationship('Product', secondary=order_product)
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False, unique=True)
price = db.Column(db.Integer, nullable=False)
FLASK_APP=app.py
FLASK_ENV=development
from probatina import app
if __name__ == '__main__':
app()
SQLALCHEMY_DATABASE_URI = 'sqlite:///C:/Users/ferna/Documents/Curso Aprender a programar desde cero/probatinas_2/probatina/db.sqlite3'
SQLALCHEMY_TRACK_MODIFICATIONS = False
您必须使用
db.commit()
@Klaus D。我不确定,因为我以前在两个文件(app.py和db.sqlite3)中有这个项目,并且它在没有db.commit()命令的情况下工作得很好。我认为问题与当前的结构文件和文件之间的链接(有些称为其他文件)有关,但我不确定。谢谢你的回答。你甚至在某处导入了db.py
吗?db.create\u all()
应该在模型声明之后。