为什么有2个不同的输出

越南语-英语
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey,create_engine
engine = create_engine('sqlite:///college.db',echo = True)
metadata = MetaData()
users = Table('users', metadata,
      Column('id', Integer, primary_key=True),
      Column('name', String(50)),
      Column('fullname', String(50)),
)

addresses = Table('addresses', metadata,
   Column('id', Integer, primary_key=True),
   Column('user_id', None, ForeignKey('users.id')),
   Column('email_address', String(50), nullable=False))
metadata.create_all(engine)

这是第一个输出:

CREATE TABLE addresses (
id INTEGER NOT NULL,
user_id INTEGER,
email_address VARCHAR NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY(user_id) REFERENCES users (id)

然后,我再次点击运行,输出更改为:

2019-04-18 21:06:57,881 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2019-04-18 21:06:57,886 INFO sqlalchemy.engine.base.Engine ()
2019-04-18 21:06:57,892 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2019-04-18 21:06:57,899 INFO sqlalchemy.engine.base.Engine ()
2019-04-18 21:06:57,904 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("users")
2019-04-18 21:06:57,909 INFO sqlalchemy.engine.base.Engine ()
2019-04-18 21:06:57,923 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("addresses")
2019-04-18 21:06:57,928 INFO sqlalchemy.engine.base.Engine ()
metadata.create_all(engine)
2019-04-18 21:07:17,156 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("users")
2019-04-18 21:07:17,157 INFO sqlalchemy.engine.base.Engine ()

annyone可以解释为什么我第二次点击运行后会有一些变化吗?

暮光之城

第二次运行代码时,表已经创建,这就是为什么要获得看到的输出的原因。如果要再次获得相同的输出,则必须先删除表:

from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey,create_engine
engine = create_engine('sqlite:///college.db',echo = True)
metadata = MetaData()
users = Table('users', metadata,
      Column('id', Integer, primary_key=True),
      Column('name', String(50)),
      Column('fullname', String(50)),
)

addresses = Table('addresses', metadata,
   Column('id', Integer, primary_key=True),
   Column('user_id', None, ForeignKey('users.id')),
   Column('email_address', String(50), nullable=False))
metadata.create_all(engine)
users.drop(engine)
addresses.drop(engine)

但这当然会为您提供一个空数据库!要在重新创建表时获取异常,可以使用checkfirst参数:

metadata.create_all(engine, checkfirst=False)

您看到PRAGMA输出对于获取表的某些元数据很有用:

foo = engine.execute('PRAGMA table_info("addresses")').fetchall()
print(foo)

另请参阅此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

去渠道:为什么有两个不同的输出?

为什么while循环显示2个不同的输出?

为什么Unicode有2个空格?有什么不同?

解释为什么“结果”在3个不同的位置上有不同的输出?

为什么2个相同的图像具有不同的dataUrl?

为什么有 2 个不同的 ComponentActivity 类?

为什么2个线程增加一个变量会导致不同的输出

为什么输出不同?

为什么输出不同?

为什么两个函数给出具有相同方法的不同输出?

为什么这两个代码给出不同的输出

为什么这两个模板函数的输出不同?

为什么这两个序言句子的输出不同?

为什么我添加一个“&”,它输出不同?

为什么两个循环的输出不同?

为什么输出与这两个不同?

为什么showconsolefont在tmux中有不同的输出?

为什么从numpy到OS会有不同的asinh输出?

为什么这些输出不同?

为什么输出与输入不同?

为什么这个变量组合输出带有 2 个反斜杠的答案?

为什么Php pbkdf2输出与golang不同?

为什么两个示例的输出在Javascript布尔值方面有所不同?

为什么我的C ++代码在ideone和Codeforces自定义测试中给出2个不同的输出?

为什么这两个代码给出不同的输出?// bits.c float_i2f

为什么不能在 id 上加入具有不同行数的 2 个表?

为什么2个不同的python lambda具有相同的字节码?

为什么我有 2 个不同的必填字段验证弹出窗口

为什么 2 个不同的字符串在 C 中有相同的地址?