Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
flask poll应用程序的sqlite3架构_Sqlite_Database Schema_Flask - Fatal编程技术网

flask poll应用程序的sqlite3架构

flask poll应用程序的sqlite3架构,sqlite,database-schema,flask,Sqlite,Database Schema,Flask,我是一名初学者,我想使用flask和sqlite3作为数据库引擎构建一个民意测验应用程序 我的问题是如何创建两个表,“问题”和“选择”,以便每个问题都有一些选择(可能不是固定数字) 我最初的做法相当幼稚: drop table if exists entries; create table question ( ques_id integer primary key autoincrement, ques string not null, choice1 string n

我是一名初学者,我想使用flask和sqlite3作为数据库引擎构建一个民意测验应用程序

我的问题是如何创建两个表,“问题”和“选择”,以便每个问题都有一些选择(可能不是固定数字)

我最初的做法相当幼稚:

drop table if exists entries;
create table question (
    ques_id integer primary key autoincrement,
    ques string not null,
    choice1 string not null,
    choice2 string not null,
    choice3 string not null,
    choice4 string not null,
    pub_date integer
); 
下面是一种更简单的方法。这有助于存储所有问题共有的一组单独的选项

CREATE TABLE choices (
    choice_id integer primary key autoincrement,
    choice string not null
);

CREATE TABLE questions (
    ques_id integer primary key autoincrement,
    ques string not null,
    choice_id integer,
    FOREIGN KEY(choice_id) REFERENCES choice(choice_id)
);
口译员会话示例:

>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> c = conn.cursor()
>>> c.execute("""CREATE TABLE choices (
...     choice_id integer primary key autoincrement,
...     choice string not null
... );""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""CREATE TABLE questions (
...     ques_id integer primary key autoincrement,
...     ques string not null,
...     choice_id integer,
...     pub_date integer,
...     FOREIGN KEY(choice_id) REFERENCES choice(choice_id)
... );""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("INSERT INTO choices (choice) VALUES ('yes')")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""INSERT INTO questions (ques,choice_id) 
                 VALUES ('do you like sqlite?',1)""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""SELECT ques, choice 
                   FROM questions q 
                        JOIN choices c ON c.choice_id = q.choice_id;""")
>>> c.fetchall()
[(u'do you like sqlite?', u'yes')]
导入sqlite3 >>>conn=sqlite3.connect(“:内存:”) >>>c=连接光标() >>>c.execute(““”创建表选项( …选项\u id整数主键自动递增, …选择字符串不为空 ... );""") >>>c.执行(“”创建表格问题( …ques_id整数主键自动递增, …字符串不为空, …选择\u id整数, …发布日期整数, …外键(选项id)引用选项(选项id) ... );""") >>>c.execute(“插入选项(选项)值('yes')”) >>>c.在问题(问题、选项)中插入(“”) 值('您喜欢sqlite吗?',1“”) >>>c.执行(“”选择任务,选择 来自问题q 在c.choice_id=q.choice_id;“”)上连接选项c >>>c.fetchall() [(你喜欢sqlite吗?',你喜欢]] 以下是一种更有效的方法。这有助于存储所有问题共有的单独选项集

CREATE TABLE choices (
    choice_id integer primary key autoincrement,
    choice string not null
);

CREATE TABLE questions (
    ques_id integer primary key autoincrement,
    ques string not null,
    choice_id integer,
    FOREIGN KEY(choice_id) REFERENCES choice(choice_id)
);
口译员会话示例:

>>> import sqlite3
>>> conn = sqlite3.connect(':memory:')
>>> c = conn.cursor()
>>> c.execute("""CREATE TABLE choices (
...     choice_id integer primary key autoincrement,
...     choice string not null
... );""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""CREATE TABLE questions (
...     ques_id integer primary key autoincrement,
...     ques string not null,
...     choice_id integer,
...     pub_date integer,
...     FOREIGN KEY(choice_id) REFERENCES choice(choice_id)
... );""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("INSERT INTO choices (choice) VALUES ('yes')")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""INSERT INTO questions (ques,choice_id) 
                 VALUES ('do you like sqlite?',1)""")
<sqlite3.Cursor object at 0x7f29f60b8ce8>
>>> c.execute("""SELECT ques, choice 
                   FROM questions q 
                        JOIN choices c ON c.choice_id = q.choice_id;""")
>>> c.fetchall()
[(u'do you like sqlite?', u'yes')]
导入sqlite3 >>>conn=sqlite3.connect(“:内存:”) >>>c=连接光标() >>>c.execute(““”创建表选项( …选项\u id整数主键自动递增, …选择字符串不为空 ... );""") >>>c.执行(“”创建表格问题( …ques_id整数主键自动递增, …字符串不为空, …选择\u id整数, …发布日期整数, …外键(选项id)引用选项(选项id) ... );""") >>>c.execute(“插入选项(选项)值('yes')”) >>>c.在问题(问题、选项)中插入(“”) 值('您喜欢sqlite吗?',1“”) >>>c.执行(“”选择任务,选择 来自问题q 在c.choice_id=q.choice_id;“”)上连接选项c >>>c.fetchall() [(你喜欢sqlite吗?',你喜欢]]
@Adam-只是为了澄清我的困惑…架构的最后一行发生了什么事?@infoquad:在这个主题上,我不能比SQLite自己的优秀文档做得更好:干杯。@Adam-只是为了澄清我的困惑…架构的最后一行发生了什么事?@infoquad:我不能比SQLite自己的优秀文档做得更好关于主题:干杯。