Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个sqlite数据库并通过python和flask保存它_Python_Flask_Sqlalchemy - Fatal编程技术网

创建一个sqlite数据库并通过python和flask保存它

创建一个sqlite数据库并通过python和flask保存它,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我有这样定义的SQLAlchemy类 from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) db = SQLAlchemy(app) connections_table = db.Table('connections', db.metadata, db.Column('book_id', db.Integer, db.ForeignKey('book.id')

我有这样定义的SQLAlchemy类

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

connections_table = db.Table('connections', db.metadata,
    db.Column('book_id', db.Integer, db.ForeignKey('book.id')),
    db.Column('author_id', db.Integer, db.ForeignKey('author.id')))

class Author(db.Model):
    __tablename__ = 'authors'
    __searchable__ = ['a_name']
    __table_args__ = {'sqlite_autoincrement': True,}

    id = db.Column(db.Integer, primary_key=True)
    a_name = db.Column(db.String(80), unique=True)

    def __repr__(self):
        return unicode(self.name)


class Book(db.Model):
    __tablename__ = 'books'
    __searchable__ = ['b_name']
    __table_args__ = {'sqlite_autoincrement': True,}

    id = db.Column(db.Integer, primary_key=True)
    b_name = db.Column(db.String(80))
    authors = db.relationship('Author', secondary=lambda: connections_table,
                              backref=db.backref('books'))

    def __repr__(self):
        return unicode(self.b_name)

如何将sqlite数据库保存在硬盘上并在将来使用?哪些命令会有帮助?

创建
config.py
以及
app.py
(您在其中写入上述代码的主文件)及其内容如下

import os
basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.sqlite')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
然后在你的应用程序中;添加一行作为:

app = Flask(__name__)
app.config.from_object('config')## add this line... .
db = SQLAlchemy(app)
现在你可以在任何地方使用
app.sqlite

此外,您还可以在同一位置创建“db_create.py”文件,并将其内容设置为:

现在;运行此“db_create.py”来设置数据库
有关更多信息,请单击

from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path
db.create_all()
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
    api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
else:
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO))