いくつかのアドバイスや助けを頼りにしています。私は、現在のシステム日付にデフォルト値にカラム値を設定したい、日付値をテーブルに挿入しないでください。私は2つの異なる方法で成功しなかった。最初は以下の通りです。私は09月ですが、私はこのエラーを理解していないです推測していますテーブル作成時にSQLiteのデフォルトの日付値を設定する方法
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
:
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()
、文字列フォーマットを使用してこのコードを実行することは私にエラーを与えます。返し
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 version 2.8.17を使用しています ありがとうございました。
「現在」を参照してください、テーブルの作成や行の挿入を行いますか? –
@ CL。行挿入中に "現在"を意味したいと思います。申し訳ありませんが、それを明確にしていません。 – J2112O