我正尝试将'financies'数据库的'register'表中的'date'变量转换为日期格式。
我有下面的Python代码,它可以运行并且不会抛出任何错误。除了“update register”语句外,其他都正常工作。
import sqlite3
import pandas as pd
conn = sqlite3.connect('C:\\SQLite\\finances.db')
cursor = conn.cursor()
cursor_obj = conn.cursor()
# read the csv file
df = pd.read_csv('C:\\SQLite\\finance_register.csv')
# write to SQLite
df.to_sql("register", conn, if_exists="replace", index=False)
# change column names
cursor.execute('''alter table register rename 'Category Group' to category_group''')
cursor.execute('''alter table register rename 'Account' to account''')
cursor.execute('''alter table register rename 'Flag' to flag''')
cursor.execute('''alter table register rename 'Date' to date''')
cursor.execute('''alter table register rename 'Payee' to payee''')
cursor.execute('''alter table register rename 'Category Group/Category' to category_group_category''')
cursor.execute('''alter table register rename 'Category' to category''')
cursor.execute('''alter table register rename 'Memo' to memo''')
cursor.execute('''alter table register rename 'Outflow' to outflow''')
cursor.execute('''alter table register rename 'Inflow' to inflow''')
cursor.execute('''alter table register rename 'Cleared' to cleared''')
cursor.execute('''update register set date = substr(date, 7, 4) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2)''')
conn.close()
字符串
当我在SQLite Studio中执行以下代码时,更改生效:
update register set date=substr(date, 7, 4) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2);
型
我不知道为什么Python脚本不工作。有什么想法吗
1条答案
按热度按时间dgiusagp1#
Python中的SQLite实现了事务管理(docs),这意味着某些语句,即
UPDATE
、INSERT
、DELETE
和REPLACE
隐式地打开了必须提交的SQL transaction。未提交的事务将被忽略。虽然可以通过将
isolation_level=None
关键字参数传递给.connect()
函数(docs)来关闭此功能,但我的建议是在程序末尾添加一个db.commit()
语句,如下所示。字符串
您还可以考虑
db.executescript()
函数,它允许您更轻松地同时调用多个SQL语句。