Перезапись файла на месте часто делается путем сохранения старой копии с измененным именем. Люди Unix добавляют ~
для маркировки старого. Люди Windows делают все виды вещей - добавляют .bak или .old - или переименовывают файл полностью или помещают ~ на переднюю сторону имени.
import shutil
shutil.move( afile, afile+"~" )
destination= open( aFile, "w" )
source= open( aFile+"~", "r" )
for line in source:
destination.write( line )
if <some condition>:
destination.write( >some additional line> + "\n" )
source.close()
destination.close()
Вместо shutil
, можно использовать следующее.
import os
os.rename( aFile, aFile+"~" )
Из этой ссылки мы видим, что схемы MS SQL больше не привязаны к пользователям, вот соответствующая цитата:
Поведение схем изменилось в SQL Server 2005. Схемы больше не эквивалент пользователей базы данных; каждый схема теперь является отдельным пространством имен который существует независимо от пользователь базы данных, который ее создал. В других словами, схема - это просто контейнер объектов. Схемой может владеть любой пользователь, и его право собственности переносимый.
В MySQL базы данных и схемы - это одно и то же, вы даже можете заменять слова в командах, т.е. CREATE DATABASE имеет синоним CREATE SCHEMA.
MySQL поддерживает несколько баз данных (схем), а MS SQL поддерживает несколько баз данных и несколько схем.
Я считаю, что, говоря «схема» для MS SQL, вы имеете в виду «владелец».
Насколько я понимаю, в MySQL, когда вы выполняете
SELECT * from world.city;
Этот запрос выбирает из мировой базы данных таблица city.
В MsSQL вам нужно будет сделать
SELECT * from world.dbo.city;
Где dbo является владельцем таблицы по умолчанию.
Чтобы упростить жизнь, определите базу данных по умолчанию, набрав
USE world
SELECT * from city;
В MySQL нет возможности объявить владельца таблицы. т.е. 'dbo'.
Чтобы упростить жизнь, определите базу данных по умолчанию, набрав
USE world
SELECT * from city;
В MySQL нет способа объявить владельца таблицы. т.е. 'dbo'.
Чтобы упростить жизнь, определите базу данных по умолчанию, набрав
USE world
SELECT * from city;
В MySQL нет способа объявить владельца таблицы. т.е. 'dbo'.
MS SQL Определенно поддерживает несколько баз данных, каждая со схемами от 1 до многих, dbo используется по умолчанию только для целей обратной совместимости.
В общем, я считаю полезной следующую статью в Википедии .
Внизу статьи следующее:
Спецификация SQL делает понять, что такое «схема SQL»; однако в разных базах это реализовано неправильно. Чтобы усугубить эту путаницу, при неправильной реализации функциональность может перекрываться с функциональностью родительской базы данных. Схема SQL - это просто пространство имен в базе данных, вещи в этом пространстве имен адресуются с помощью точки оператора-члена ".". Это кажется универсальным среди всех реализаций. Истинный полностью квалифицированный запрос (база данных, схема и таблица) представлен как таковой:
select * from database.schema.table
Теперь проблема, как схему, так и базу данных, можно использовать для изоляции одной таблицы ,
foo
из другой таблицы с похожим именемfoo
. Ниже приведен псевдокод:выберите * из db1.foo
vs.выберите * из db2.foo
(без явной схемы между db и таблицей)выберите * из [db1. ] default.foo
vs.select * from [db1.] alternate.foo
(без явного префикса db) Возникающая проблема состоит в том, что бывшие пользователи MySQL будут создавать несколько баз данных для одного проекта. В этом контексте базы данных MySQL аналогичны по функциям схемам Postgres, поскольку в Postgres отсутствуют стандартные функциональные возможности кросс-баз данных, которые есть в MySQL. Наоборот, Postgres применил больше спецификаций, реализующих кросс-таблицу, кросс-схему, а затем оставил место для будущей кросс-базы данных. Скрытые псевдонимы MySQL, схема с базой данных, такая, что создают схему, и создание базы данных являются аналогами.Можно сказать, что MySQL, таким образом, реализовал функциональность кросс-таблицы, полностью пропустил функциональность схемы и предоставил аналогичную функциональность в свои реализация базы данных . Таким образом, Postgres полностью поддерживает схемы, но ему не хватает некоторых функций MySQL с базами данных, в то время как MySQL даже не пытается поддерживать истинные схемы.