寻找一些建议和帮助。如果没有将日期值插入表中,我想将列值设置为当前系统日期的缺省值。我以两种不同的方式尝试了成功。第一个在下面。使用字符串格式化,并运行此代码,如何在表创建期间在SQLite中设置默认日期值
current_date = datetime.now().strftime('%Y %m %d')
conn = sqlite3.connect("pipe_tally.db")
cur = conn.cursor()
def create_table():
"""This function creates the database table."""
cur.execute("""CREATE TABLE tally_file (
pipe_id TEXT PRIMARY KEY,
kind TEXT,
joint_num INTEGER,
heat INTEGER,
asset_length REAL CHECK(asset_length > 0),
asset_wall_thickness REAL,
asset_degree REAL,
manufacturer TEXT,
collected_date TEXT DEFAULT {}
)""".format(current_date))
conn.commit()
给我的错误:
Traceback (most recent call last):
File "main.py", line 18, in <module>
main()
File "main.py", line 11, in main
db.create_table()
File "/home/bigdaddy/PAM_Android/db_helper.py", line 25, in create_table
)""".format(current_date))
sqlite3.OperationalError: near "09": syntax error
对此我猜是09月,但我不理解这个错误。 第二种方法是试图用如下的元组:
import sqlite3
from datetime import datetime
current_date = datetime.now().strftime('%Y %m %d')
conn = sqlite3.connect("pipe_tally.db")
cur = conn.cursor()
def create_table():
"""This function creates the database table."""
cur.execute("""CREATE TABLE tally_file (
pipe_id TEXT PRIMARY KEY,
kind TEXT,
joint_num INTEGER,
heat INTEGER,
asset_length REAL CHECK(asset_length > 0),
asset_wall_thickness REAL,
asset_degree REAL,
manufacturer TEXT,
collected_date TEXT DEFAULT (?)
)""", (current_date,))
conn.commit()
运行,返回:
Traceback (most recent call last):
File "main.py", line 18, in <module>
main()
File "main.py", line 11, in main
db.create_table()
File "/home/bigdaddy/PAM_Android/db_helper.py", line 25, in create_table
)""", (current_date,))
sqlite3.OperationalError: default value of column [collected_date] is not constant
是否有可能使用SQLite做到这一点? 我使用Xubuntu Linux 16.04 LTS,Python3.6和SQLite3 2.8.17版本 在此先感谢您的帮助。
什么是“电流”是指,创建表或行插入? –
@CL。我希望“当前”意味着行插入。对不起,没有澄清。 – J2112O