我尝试在 python 2.7 中执行一个简单的更新语句,但它根本不起作用。我希望有人能告诉我这个错误:
import MySQLdb
import datetime
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="root", # your username
passwd="", # your password
db="******") # name of the data base
cur = db.cursor()
cur.execute("SELECT * FROM data")
for row in cur.fetchall():
id_row = str(row[0])
date = str(row[1])
new_date = date[:-2]
new_date += "00"
cur.execute("UPDATE data SET date={0} WHERE ID={1}".format(new_date, id_row))
db.close()
Run Code Online (Sandbox Code Playgroud)
该脚本应将日期作为 unix 时间戳从数据库中截取最后两个数字,将其替换为 00 并更新数据库中的行。替换数字的代码有效,但更新过程无效。它不显示任何错误消息并以代码 0 退出。
我不知道我在哪里犯了错误。有人可以帮忙吗?
多谢!
使用 Python 处理现有记录中的字段UPDATE的语法是什么?我创建了一个 13x13 浮点数组,并希望使用该数组更新表中的特定记录(即使用子句)。BLOBSQLiteWHERE
正确的语法是什么UPDATE?
该数组具有以下形式:
[ 4.65640926e+00 5.59250259e+00 5.28963852e+00 1.60680866e+00
-3.39492680e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
1.49733067e+00 1.51563072e+00 1.49733067e+00 9.53471420e-01
-1.40306473e+00]
[ 5.28963852e+00 5.34537315e+00 5.05013466e+00 1.48362923e+00
-3.69843300e-01 -4.76834650e-01 -4.76834650e-01 -2.29132240e-01
7.60705290e-01 1.49733067e+00 9.53471420e-01 3.05504260e-01
-1.40306473e+00]
Run Code Online (Sandbox Code Playgroud)
总共 13 行,每行 13 个子阵列。
谢谢你,比尔
我已经尝试过下面的答案,但我找不到正确的方法
问题就在这里。我有一个带有两个表的 sqlite 数据库。在下面的代码中,我使用 pandas 插入一些虚拟值
import sqlite3
import pandas
conn = sqlite3.connect('foo.db')
curs = conn.cursor()
df1 = pandas.DataFrame([{'A' : 1, 'B' : 'a', 'C' : None}, {'A' : 1, 'B' : 'b', 'C' : None}, {'A' : 2, 'B' : 'c', 'C' : None}])
df1.to_sql('table1', conn, index = False)
df2 = pandas.DataFrame([{'A' : 1, 'D' : 'x'}, {'A' : 2, 'D' : 'y'}])
df2.to_sql('table2', conn, index = False)
Run Code Online (Sandbox Code Playgroud)
这会产生两个表
pandas.read_sql('select * …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下列和记录的表。我需要比较两列值(ColumnA 和 ColumnB),如果 ColumnB>ColumnA 则将第三列从“N”更新为“Y”
CREATE TABLE Test(ColumnA int,ColumnB int,Result Varchar(2))
INSERT INTO Test values(1,3,'N')
INSERT INTO Test values(2,1,'N')
INSERT INTO Test values(1,5,'N')
INSERT INTO Test values(8,7,'N')
Run Code Online (Sandbox Code Playgroud)
我需要更新第一行和第三行的 Result Column='Y' 因为 columnB>ColumnA
结果
ColumnA ColumnB Result
1 3 Y
2 1 N
1 5 Y
8 7 N
Run Code Online (Sandbox Code Playgroud) datasource我有一个名为 jsonb 列的postgresql 表data。它具有以下结构:
{
"key1":{"param1" : "value1", "param2" : "value2"},
"key2":{"param2_1" : "value2_1", "param2_2" : "value2_2"},
"key3":{"param3_1" : "value3_1", "param3_2" : "value3_2"}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法编写一些 UPDATE 脚本来将给定的 JSON 转换为以下内容:
[
{"key": "key1", "param1" : "value1", "param2" : "value2"},
{"key": "key2", "param2_1" : "value2_1", "param2_2" : "value2_2"},
{"key": "key3", "param3_1" : "value3_1", "param3_2" : "value3_2"}
]
Run Code Online (Sandbox Code Playgroud) 我想将值插入到 tableA 中,然后更新列 [amount_hkd]。我已经成功使用触发器,但性能非常慢,应用触发器后需要一个小时才能完成 8400 行的插入。我怎样才能提高性能?感谢您的帮助
要执行的语句:
INSERT INTO tableA (suppliers, invoice_dates, shipment_dates, amounts, currency, currency_conversion_rate)
SELECT l.supplier, l.invoice_date, l.shipment_date, l.amount, l.currency, o.currency_conversion_rate
FROM tableB l
LEFT JOIN tableC o
ON l.currency = o.currency_code
WHERE l.supplier = 'ABC'
Run Code Online (Sandbox Code Playgroud)
我创建的函数:
CREATE OR REPLACE FUNCTION cal()
RETURNS TRIGGER AS $$
BEGIN
UPDATE tableA
SET amount_hkd = NEW.amounts * NEW.currency_conversion_rate;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
我尝试的第一个触发器:
CREATE CONSTRAINT TRIGGER update_amount
AFTER INSERT ON tableA
DEFERRABLE
INITIALLY DEFERRED
FOR EACH ROW
EXECUTE PROCEDURE …Run Code Online (Sandbox Code Playgroud) 我想加入或更新以下两个表,并添加df现有单词。因此,如果第一个表中不存在该单词endeavor,则应将其值相加,或者如果两个表中都存在df该单词,则应将其相加。hellodf
仅供参考,我正在使用 MariaDB 和 PySpark 对文档进行字数统计并计算 tf、df 和 tfidf 值。
表名:df
+--------+----+
| word| df|
+--------+----+
|vicinity| 5|
| hallo| 2|
| admire| 3|
| settled| 1|
+--------+----+
Run Code Online (Sandbox Code Playgroud)
表名:word_list
| word| df|
+----------+---+
| hallo| 1|
| settled| 1|
| endeavor| 1|
+----------+---+
Run Code Online (Sandbox Code Playgroud)
所以最后更新/组合的表应该如下所示:
| word| df|
+----------+---+
| vicinity| 5|
| hallo| 3|
| admire| 3|
| settled| 2|
| endeavor| 1|
+----------+---+
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试做的事情如下:
SELECT df.word, df.df + word_list.df FROM df …Run Code Online (Sandbox Code Playgroud) 假设我们有这个SQL语句:
UPDATE article SET saison='12E', mode='ECH', client='SAS', WHERE ID='3448fe81-1bec-e011-8546-001f3ccf8f20'
Run Code Online (Sandbox Code Playgroud)
此SQL语句由连接的字符串生成,如下所示:
// saison change
procedure TarticleEditForm.saisonComboChange(Sender: TObject);
begin
SQLQuery := SQLQuery + 'saison=''' + saisonCombo.Text + ''',';
end;
// client change
procedure TarticleEditForm.clientComboChange(Sender: TObject);
begin
SQLQuery := SQLQuery + 'client=''' + clientCombo.Text + ''',';
end;
.
.
.
Run Code Online (Sandbox Code Playgroud)
如您所见,在"WHERE"子句之前有一个逗号.如何删除最后一个逗号以获得正确的语句:
UPDATE article SET saison='12E', mode='ECH', client='SAS' WHERE ID='3448fe81-1bec-e011-8546-001f3ccf8f20'
Run Code Online (Sandbox Code Playgroud)
RMQ:逗号的数量不固定,可以是1,2,5 ......
解决方案是将",WHERE"替换为"WHERE"
SQLQuery := StringReplace(SQLQuery , ', WHERE', 'WHERE', [rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)
我用这个跟踪HISTORY表中的每个变化.谢谢你们.
嗨,我很难理解为什么这不是更新数据库.它重新加载指向的页面,HEADER但不更新任何字段.任何帮助都会被贪得无厌.
更新表格
<?php
include("../script/dbconnect.php");
include("../script/addprodcat.php");
$post = get_posts($_GET['id']);
if ( isset($_POST['name'], $_POST['description'], $_POST['price'], $_POST['sale'], $_POST['picture'], $_POST['category']) ) {
$errors = array();
$name = trim($_POST['name']);
$description = trim($_POST['description']);
if ( empty($name) ) {
$errors[] = 'You need to supply a title';
} else if ( strlen($name) > 255 ) {
$errors[] = 'Title cannot be longer than 255 characters';
}
if ( empty($description) ) {
$errors[] = 'You need to supply text';
}
if ( empty($price) ) {
$errors[] …Run Code Online (Sandbox Code Playgroud) 是否可以在UPDATE()中使用一个变量来检查列是否更新?
这是我的示例代码:
DECLARE @ColumnCount int
DECLARE @ColumnCounter int
DECLARE @ColumnName nvarchar(MAX)
SET @ColumnCounter = 0
SELECT @ColumnCount = COUNT(c.COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'Province'
WHILE @ColumnCount >= @ColumnCounter
BEGIN
SELECT @ColumnName = c.COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'Province' AND c.ORDINAL_POSITION = @ColumnCounter
IF (UPDATE(@ColumnName))
SET @ColumnCounter = @ColumnCounter + 1
END
Run Code Online (Sandbox Code Playgroud) sql-update ×10
sql ×6
join ×2
mysql ×2
postgresql ×2
python ×2
sqlite ×2
arrays ×1
blob ×1
case ×1
delphi ×1
json ×1
mariadb ×1
pandas ×1
php ×1
sql-insert ×1
sql-server ×1
string ×1
t-sql ×1
triggers ×1