Самый простой из всех решений:
В возвышенном виде щелкните Файл -> Сохранить с кодировкой -> UTF-8
blockquote>Затем вы можете прочитать свой файл, как обычно:
import pandas as pd data = pd.read_csv('file_name.csv', encoding='utf-8')
EDIT 1:
Если есть много файлов, вы можете пропустить возвышенный шаг.
Просто прочитайте файл, используя
data = pd.read_csv('file_name.csv', encoding='utf-8')
и другие различные типы кодирования:
encoding = "cp1252" encoding = "ISO-8859-1"
Вот пример использования mysqli (объектный синтаксис - довольно легко перевести в функциональный синтаксис, если хотите):
$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");
$stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($column1, $column2, $column3);
while($stmt->fetch())
{
echo "col1=$column1, col2=$column2, col3=$column3 \n";
}
$stmt->close();
Кроме того, если вам нужен простой способ получить ассоциативные массивы (для использования с помощью SELECT *) вместо того, чтобы точно указывать, к каким переменным привязываться, вот удобная функция:
function stmt_bind_assoc (&$stmt, &$out) {
$data = mysqli_stmt_result_metadata($stmt);
$fields = array();
$out = array();
$fields[0] = $stmt;
$count = 1;
while($field = mysqli_fetch_field($data)) {
$fields[$count] = &$out[$field->name];
$count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);
}
Чтобы использовать ее, просто вызовите ее вместо вызова bind_result:
$stmt->store_result();
$resultrow = array();
stmt_bind_assoc($stmt, $resultrow);
while($stmt->fetch())
{
print_r($resultrow);
}
Если вы собираетесь использовать mysqli - что кажется мне лучшим решением - я настоятельно рекомендую скачать копию класса codesense_mysqli .
Это аккуратный маленький класс, который оборачивает и скрывает большую часть ненужной информации, которая накапливается при использовании необработанного mysqli, так что при использовании подготовленных операторов требуется только одна или две дополнительные строки по сравнению со старым интерфейсом mysql / php
Подготовленные операторы не поддерживаются простым старым интерфейсом Mysql / PHP. Вам понадобится PDO или mysqli . Но если вы просто хотите заменить заполнители, проверьте этот комментарий на странице руководства php mysql_query.
Я согласен с несколькими другими ответами:
ext / mysql
не поддерживает параметризованные операторы SQL. mysql_real_escape_string ()
также может быть эффективным, если вы используете его правильно, но он более подробный для кода. Также следует отметить, что вам все равно следует быть осторожным с внедрением SQL, даже если вы используете параметры запроса, потому что параметры в запросах SQL заменяют только буквальные значения. Если вы создаете SQL-запросы динамически и используете переменные PHP для имени таблицы, имени столбца, или любой другой части синтаксиса SQL, ни параметры запроса, ни mysql_real_escape_string ()
в этом случае не помогут. Например:
$query = "SELECT * FROM $the_table ORDER BY $some_column";
Что касается производительности:
Бывают даже случаи, когда подготовленный запрос снижает производительность . Например, в следующем случае оптимизатор не может предположить, что он может использовать индекс для поиска,
Если модель имеет другие свойства, а затем имя, вам необходимо инициализировать их исходным значением в базе данных, если только они не будут установлены на null.
Вы можете использовать операции обновления HQL ; Сам я никогда не пробовал.
Вы также можете использовать собственный оператор SQL . (" Вот несколько мест, где вы можете получить полезные советы:
На мой взгляд, два наиболее важных элемента:
mysql_real_escape_string ()
функция (или что-то подобное). Несколько причин: Если у вас есть сложные объединения, иногда лучше иметь представление, чтобы при любом доступе соединения всегда были правильными, а разработчикам не приходилось запоминать все таблицы, которые могут им понадобиться. Обычно это может быть для финансового приложения, где чрезвычайно важно, чтобы все финансовые отчеты основывались на одном и том же наборе данных.
Если у вас есть пользователи, которым вы хотите ограничить записи, которые они могут когда-либо видеть, вы можете использовать представление , предоставьте им доступ только к представлению, а не к базовым таблицам, а затем запросите представление
Похоже, что отчеты Crystal предпочитают использовать представления для сохраненных процессов, поэтому люди, которые много пишут отчеты, как правило, используют много представлений
] Представления также очень полезны при рефакторинге баз данных. Часто вы можете скрыть изменение, чтобы старый код не увидел его, создав представление.
$("#source").appendTo("#destination");
В качестве альтернативы вы можете использовать функцию prependTo
(которая добавляет в начало элемента):
$("#source").prependTo("#destination");
Пример:
$ ("# appendTo"). Click (function () {$ ("#moveMeIntoMain"). appendTo ($ ("# main"));}); $ ("# prependTo"). click (function () {$ ("# moveMeIntoMain"). prependTo ($ ("# main"));});
#main {border: 2px сплошной синий; минимальная высота: 100 пикселей; } .moveMeIntoMain {граница: 1px сплошной красный; }
main < / div> переместить меня на главную
11
ответ дан 28 November 2019 в 04:33
поделиться